Come caricare dynamicmente JavaScript di Google Analytics?

Senza utilizzare altri framework JS (dojo, jquery, ecc.), Come caricare dynamicmente il javascript di Google Analytic per essere utilizzato su una pagina Web per il web-tracking?

Il tipico appropriato per caricare dynamicmente JS è quello di fare quanto segue:

var gaJs = document.createElement("script"); gaJs.type = "text/javascript"; gaJs.src = "http://www.google-analytics.com/ga.js"; document.body.appendChild(gaJs); var pageTracker = _gat._getTracker("UA-XXXXXXXXX"); pageTracker._initData(); pageTracker._trackPageview(); 

Ma questo non funziona.

Il file ga.js non viene caricato in tempo perché _gat._getTracker e _initData / TrackPageview funzionino.

Qualche idea su come caricare dynamicmente ga.js.

    AGGIORNAMENTO : sembra che qualcuno abbia tentato di risolvere questo problema al seguente link. Tuttavia, è da utilizzare con il vecchio codice Urchin e non con Google Analytics.

    Qualche idea su come farlo funzionare con ga.js invece di urchin.js?

    http://20y.hu/20070805/loading-google-analytics-dynamically-on-document-load.html

    Potresti usare questo frammento di HTML5 Boilerplate .

       

    Prova a utilizzare l’esatto codice JavaScript fornito da Google e quindi a mostrare in modo condizionato quella sezione di codice basata su un costrutto nel tuo framework UI. Non hai detto su quale piattaforma è in esecuzione, se è ASP.NET puoi inserire il codice in un PlaceHolder o UserControl e quindi impostare Visible su true o false in base all’impostazione di un file di configurazione se lo script deve essere incluso. Ho utilizzato questo approccio su più siti per impedire che lo script di Analytics venga incluso negli ambienti di pre-produzione.

    La programmazione lato server sarebbe più facile, credo, ma l’ho trovato qualche tempo fa. Si noti che lo imposta specificamente sulla html head .

    Controlla anche il primo link in basso su “Aggiunta di Javascript tramite Ajax”.

    Ho letteralmente messo insieme qualcosa che fa questo … usando jquery. Il trucco è aggiungere un evento di caricamento al tag script con il codice di tracciamento al suo interno.

     var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); var gaScript = document.createElement('script'); var loaded = false; gaScript.src = gaJsHost + "google-analytics.com/ga.js"; $(gaScript).load(function(){ loaded = true; var pageTracker = _gat._getTracker(Consts.google_analytics_uacct); pageTracker._initData(); pageTracker._trackPageview(); }); document.body.appendChild(gaScript); // And to make it work in ie7 & 8 gaInterval = setInterval(function() { if (!loaded && typeof _gat != 'undefined') { $(gaScript).load(); clearInterval(gaInterval); } },50); 

    La cosa che sto cercando di risolvere è … è consentita da Google.

     funzione loadGA ()
     {
         if (typeof _gat == 'function') // già caricato
         {
             // innitGA ();
             // potresti volere che la riga sopra non commentata .. 
             // Presumo che se l'object _gat è lì
             // non vorresti.
             ritorno;
         }
         var hostname = 'google-analytics.com';
         var protocol = (("https:" == document.location.protocol)? "https: // ssl.": "http: // www.");
         js = document.createElement ('script');
         js.setAttribute ('tipo', 'testo / javascript');
         js.setAttribute ('src', protocollo + nomehost + '/ ga.js');
         document.body.appendChild (js);
         // 2 metodi per rilevare il carico di ga.js
         // alcuni browser usano entrambi, comunque
         caricato = falso;  // quindi usa un booleano
         js.onreadystatechange = function () {
             if (js.readyState == 'loaded') 
             { 
                 if (! caricato)
                 {
                     innitGA ();
                 }
                 caricato = true;
             }
         };
         js.onload = function () 
         {
             if (! caricato)
             {           
                 innitGA ();
             }
             caricato = true;
         };
     }
    
     function innitGA ()
     {
         // var pageTracker = _gat._getTracker ('GA_ACCOUNT / PROFILE_ID');
         //pageTracker._initData ();
         //pageTracker._trackPageview ();
         alert ('oh hai posso guardare plz?');
     }
    

    basta chiamare loadGA () … testato su IE6 / 7/8, FF3, Chrome e Opera

    scusa se sono un po ‘in ritardo per questa festa.