2010-03-04 17 views
9

Sto passando al nostro sito per utilizzare Google Analytics asincrono e sono curioso di sapere come il metodo di invio degli eventi all'array _gaq. Per quanto posso dire, gli eventi sono inseriti in un pattern di attesa in _gaq mentre lo script ga.js viene scaricato in modo asincrono. Si attivano una volta scaricato lo script e in che modo vengono tracciati gli eventi di caricamento post-documento?Quando e come viene eseguito Asynchronous Google Analytics?

Un esempio è un utente che fa clic su un collegamento 10 secondi dopo il caricamento della pagina: in base alla documentazione, l'evento deve essere inserito nel _gaq. In che modo lo script di analisi lo rileva?

risposta

8

La parte generale è meglio descritta dal Google Analytics Async doc.

Per spingere una chiamata API nella coda, è necessario convertirlo dalla sintassi tradizionale JavaScript in una matrice di comando. Gli array di comandi sono semplicemente array di JavaScript conformi a un determinato formato. Il primo elemento in un array di comandi è il nome del metodo dell'oggetto tracker che si desidera chiamare. Deve essere una stringa. Il resto degli elementi sono gli argomenti che si desidera passare al metodo dell'oggetto tracker. Questi possono essere qualsiasi valore JavaScript.

Cercherò di spiegare i dettagli succosi: _gaq è solo un semplice array JavaScript, e tutti gli array hanno il metodo push per aggiungere una voce alla fine della matrice. Quindi, prima che venga caricato lo script di Analytics, tutti i comandi verranno inviati all'array. Alla fine dello script di Analytics, sostituisce il metodo _gaq.push con un metodo personalizzato ed esegue tutte le voci nell'array _gaq. Il nuovo metodo _gaq.push eseguirà il metodo di tracciamento all'istante. Pertanto, quando si esegue il metodo push dopo 10 secondi dal caricamento della pagina, è necessario eseguire il comando.

+2

Ho fatto un po 'di logging su _gaq e prima che lo script sia caricato è solo un semplice array. Una volta tirato giù lo script, _gaq viene convertito in un oggetto analitico tradizionale, che verifica ciò che stai dicendo. –

0

È sempre difficile da non offuscare il codice di google analytics, ma se dovessi risolvere questo problema, al caricamento dello script, ridefinire la funzione push sull'array dopo l'elaborazione di tutto nella coda del backlog (_gaq). In questo modo, la funzione ridefinita push si comporterebbe semplicemente come un proxy per le chiamate di funzione effettive sull'oggetto pageTracker.

Ecco un semplice esempio di ridefinire il metodo push su un oggetto array:

var foo = []; 
foo.push("one");      // pushes "one" onto the array 
foo.push("two");      // pushes "two" onto the array 
foo.push = function(a) { alert(a) }; // redefines `push` 
foo.push("three");     // alerts "three" 
alert(foo);       // alerts "one,two" 
Problemi correlati