Google analytics xhtml problém: Object cannot be created in this context

Google analytics xhtml problem: Object cannot be created in this context

Nový skript (ga.js) služby Google analytics je nefunkční ve Firefoxu (a možná i jiných), pokud je stránka podávána jako mime-typ xhtml.

New script (ga.js) by Google analytics is not working in Firefox and maybe others, when page is served as xhtml mime type.

Už dlouho jsem si říkal, proč jsou reporty Google analytics o mojí stránce evidentně špatné. Až teď mě napadlo pustit Firebug a viděl jsem chybu "Object cannot be created in this context". Když se podíváme na kód, který je potřeba pro GA vložit do stránky, je vidět, že se skládá ze dvou skriptů. Přestože se chyba vyskytuje až v tom druhém, příčinna je už v prvním.

Jediné, co dělá, je totiž to, že načte skript z adresy upravené podle použitého protokolu (zabezpečené ssl/nezabezpečené). Dělá to však pomocí metody document.write() se kterou je v xhtml problém (přesněji řečeno tam vůbec není).

Řešení je rozhodovat o protokolu přímo na serveru (pokud to vůbec potřebujete) a do stránky už místo prvního skriptu přidávat třeba jen:

<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script>.

I was curious about why my Google analytics reports are wrong for a long time. Recently I used Firebug and I was surprised that it's famous document.write() xhtml problem.

The code consist of two scripts. The first one just includes the full script from url that matches used protocol (plain/ssl). And it uses documet.write() for it, which is not available in xhtml.

The solution is simple. Make the decision (often you don't even have to) on the server side and then just include the correct tag, for example one can substitute the first script with:

<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script>.