Nieuwe code voor Google Analytics nu ook werkend in ASP

Vanwege een te vroege release van de nieuwe Google Analytics tracking code zijn hier nogal wat problemen door ontstaan. De code zou niet werken in ASP vanwege een genest script blok, dit is wel een fout in ASP dus van Microsoft, maar Google had het best even mogen testen.

Nested Script Block

A script block cannot be placed inside another script block.

Daarnaast was vanwege W3C validatie richtlijnen niet mogelijk om het script in een Blogger blog te plaatsen. Google is daarom officieel met een nieuw tracking script gekomen. Hierin zijn enkele aanpassingen gedaan die het script overal zou moeten laten werken:


<script type="text/javascript">
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">
var pageTracker = _gat._getTracker("UA-xxxx-xx");
pageTracker._initData();
pageTracker._trackPageview();
</script>

En voor de XHTML puristen moeten er nog CDATA blokken om de code heen:


<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>

Click to activate social bookmarks

 
  • Ferdy

    Niet geheel ontopic, maar vraag me al langere tijd af waarom ze kiezen voor 2 losse codeblokken. Bij de oude urchin-code deden ze dit, maar ook bij de nieuwe.
    Want is het voordeel boven alles in 1 script-block;

    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"));

    // Niet het scriptblock sluiten maar doorrrr

    var pageTracker = _gat._getTracker("UA-xxxx-xx");
    pageTracker._initData();
    pageTracker._trackPageview();

  • Dit komt door het feit dat ze in het eerste blok een script blok schrijven die de ga.js moet oproepen. Daarna wordt dus daadwerkelijk ga.js ingeladen en vervolgens mag pas het 2de script blok uitgevoerd worden want die is weer code nodig uit ga.js 🙂

  • Website promotie

    De code, die je toont, is JavaScript. Dat staat toch los van ASP? ASP is trouwens behoorlijk verouderd. We zitten nu toch in het "dot NET tijdperk"?

  • Daar heb je gelijk in, maar toch viel ASP over de oude code. Hij zag op een of andere manier een genest script block en viel daarover.

  • .NET klinkt leuk maar werkt het ook voor de browsers van Apple Macs, Linux en mobieltjes? Ik bouw al jaren sites zonder .NET te gebruiken.