verifica se il Google Analytics _gaq oggetto viene caricato e disponibile

Ho qualche Codice di Monitoraggio Google Analytics (GATC) sul mio sito che attiva le chiamate al _gaq.push metodo da Google code.

Nello scenario che GA non è disponibile, o _gaq non è caricato, voglio assicurare che non ho nessun tipo di errori JavaScript nella pagina. Controllando che _gaq non è identico a ‘undefined’ – questo è sufficiente per controllare se è disponibile ed è questo x-browser? Ho dato un’occhiata a Google di documentazione, ma non dice nulla su questo.

Sono consapevole di verificare se l’oggetto è null, ma non sono sicuro se questo è necessario.

if (typeof(_gaq) !== 'undefined') {
   _gaq.push(['_trackEvent', 'Downloaded Video', 'Yes']); 
   _gaq.push(['rollup._trackEvent', 'Downloaded Video', 'Yes']);                                    
}
InformationsquelleAutor crmpicco | 2012-11-16

 

6 Replies
  1. 18

    Il codice javascript che si ottiene dall’analisi, che include la seguente riga:

    var _gaq = _gaq || [];

    Quindi, la matrice deve essere sempre disponibile se si mantiene questa linea di codice. Se si desidera aggiungere il codice di google analytics in seguito, è sufficiente aggiungere la riga sopra prima che il vostro principale script e funziona.

    Di notare che questo frammento di codice è innocuo, anche se è stato definito _gaq prima, dato che la definisce come un nuovo Array, se precedentemente definito.

    Questo è un ottimo modo per utilizzare asincrona script, la matrice è definita prima a livello locale, e si può spingere i comandi di questo array ogni volta che è necessario. Quando l’analisi viene caricato lo script, è possibile utilizzare i comandi quando vuole. Quindi non c’è bisogno di verificare se la matrice è definita o qualcosa di simile.

    • Non voglio ri-definire il _gaq variabile, come ho fatto io per impostare il codice di Google. Ho il push chiamate altrove nel mio codice. Ri-definizione _gaq sembra rischioso.
    • Non sto dicendo che si dovrebbe ridefinire. Il mio punto è che se hai già aggiunto come i documenti che dire, non è possibile controllare per non definiti in più – e non è necessario.
  2. 50

    Se si utilizza google Analytics (analytics.js) per poi passare a questo:

    _gaq.push(['_trackEvent', 'Downloaded Video', 'Yes']); 

    a questo:

    ga('send', 'event', 'Downloaded Video', 'Yes');
    • Questo dovrebbe essere contrassegnato come risposta corretta. Grazie per il vostro aiuto.
    • Felice di aiutarti 🙂
    • Io non sto usando Universal Analytics, quindi non posso accettare questo come risposta corretta.
    • developers.google.com/analytics/devguides/collection/… il riferimento suggerisce il terzo argomento di essere un oggetto e non indietro.
    • sopra funziona solo come questo per me ga(‘send’, { ‘hitType’: ‘evento’, // Necessario. ‘eventCategory’: ‘bottone’, // Necessario. ‘eventAction’: ‘click’, // Necessario. ‘eventLabel’: ‘nav pulsanti’, ‘eventValue’: 4 }); ma sembra che sia possibile passare una stringa come questa ga(“invia”,”evento”…. che ha funzionato per me…
  3. 4

    In genere non è necessario per verificare se è definito perché il codice di Google Analytics frammento fa per voi. Tuttavia, se si sta facendo qualcosa di simile monitoraggio eventi in altre sezioni di stie come la questione suggerisce che a volte è bene controllare se lo script viene caricato dal momento che è asincrona.

    Ho scritto un plugin per jQuery wrapper per GA e volevano controllare il codice se non GA è stato infatti installato prima ho provato a spingere tutti i dati in esso. Questo è stato per coprire il caso che qualcuno ha provato ad utilizzare il plugin senza GA installato o prima di GA è stata inizializzata.

    if (typeof(_gaq) == 'undefined') {
      console.error("Google Analytics is not installed");
    }
    • Questa è la risposta corretta per me. Abbiamo solo rendere gli script di monitoraggio (google plus altri) sui siti di produzione, quindi, sulla dev/UAT _gaq non è definito. E questo funziona perfettamente. grazie
    • _gaq creato da snippet di monitoraggio, non quando ga.js viene caricato. Questo non è sufficiente. Vedere stackoverflow.com/a/13450713/307687 invece
  4. 3

    Quando ga.js è caricato, si definisce un window._gat (Mente la T al posto della D) oggetto globale, è solo bisogno di verificare se essa è definita o no (ma attenzione si è caricato in modo asincrono, quindi si può ritardare il tuo test).

  5. 1

    Come @Davide detto, come lungo come lei ha il var _gaq = _gaq || []; frammento definito in precedenza, si sta bene e non c’è bisogno di controllare per _gaq essere definito.

    Il motivo per _gaq essere definito come un array vuoto, se è stato precedentemente definito è così che ha un push metodo. In questo modo il codice di google analytics per eseguire prima il codice GA è caricato, o, in qualche caso, quando questo non è disponibile.

    Quando GA carichi, _gaq sarà ridefinito come un oggetto con un push di metodo e di contenuto esistente del vecchio _gaq array verrà eseguito.

  6. 0

    Si consiglia di aggiungere il monitoraggio degli eventi di da qualche parte in js, ma il CMS aggiunge solo Google Analytics per i non-visitatori registrati, o di alcune pagine. Il seguente controllo per la funzione di lavoro:

    if (typeof(ga) === 'function') {
      ga('send', 'event', 'what', 'has', 'happened');
    }

Lascia un commento