il tracking code di Google Analytics non è conforme agli standard XHTML

Google AnalyticsAvete recentemente aggiunto alle pagine del vostro sito il nuovo tracking script di Google Analytics e come conseguenza se sottoponete le pagine a validazione xhtml del W3C il sito risulta NON conforme agli standard xhtml?

Ecco la spiegazione della natura del problema e la soluzione.

Qualche tempo fa Google ha sostituito il suo codice tracking Urchin.js con GA.js – che, a detta di Google, promette statistiche migliori e accesso a nuove proprietà mano a mano che vengono rese disponibili. Purtroppo il nuovo codice rende la vostra pagina web non conforme agli standard XHTML e alcuni sostengono non funzioni con i siti ASP.

Il validatore di codice HTML di W3C presenta un errore con il seguente messaggio: document type does not allow element "script" here. Questo può trarre in inganno in quanto il validatore non si lamenta dell’ attuale script tag ma di alcuni caratteri contenuti all’ interno del codice Javascript.

Ci son vari modi di risolvere questo problema, la soluzione che ci sembra più semplice consiste nell’ inserire CDATA tags (evidenziate in rosso nel testo) direttamente nel tracking code generato da Google.

La versione di GA.js conforme agli standard XHTML diventa quindi:

<script type="text/javascript">
//<![CDATA[
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
//]]>
</script>
<script type="text/javascript">
//<!--[CDATA[
var pageTracker = _gat._getTracker("UA-XXXX-XX"); pageTracker._initData(); pageTracker._trackPageview();
//]]-->
</script>

Ovviamente bisogna sostituire "UA-XXXX-XX" con il vostro tracking code asseganato da Google Analytics.

L’ origine del problema sta nel fatto che le pagine XHTML si comportano diversamente dalle pagine HTML. Se inserisci Javascript in una pagina HTML, il validatore tratta automaticamente tutto quello che trova dopo la tag script come un CDATA (character data) e lo ignora.  In XHTML, JavaScript è considerate PCDATA (parsed character data) e quindi viene interpretato.

Inserire le tag CDATA all’ interno del tuo Javascript dice al validatore di ingnorare il codice e questo vi permetterà di rendere le vostre pagine conformi agli standard XHTML.