2010-10-20 3 views
5

Wenn ich HTML wie die folgenden auf meiner eigenen Website habe, wie kommt es, dass es in der Lage ist, das Ereignis zu verfolgen? Ist es möglich, dass der Browser beginnt, die http://google.com im selben Fenster zu laden, bevor die Nachverfolgungsanfrage ausgeführt wird, da sie asynchron ist?Wie die asynchrone API von Google Analytics in der Lage ist, Klick-Links zu verfolgen

<a href="http://google.com" onclick="_gaq.push(['_trackEvent', 'category', 'event']);">click</a> 

Bei der synchronen API offensichtlich wartet der Browser, bis das Skript in der Onclick lief ist, aber ich kann meinen Kopf nicht wickeln diese um.

+0

Ich fragte mich auch darüber. Ich denke, vielleicht gibt es einen Handler für onunload-Ereignis, um die Array-Größe zusammen mit einer Funktion zu überprüfen, die in regelmäßigen Abständen aufgerufen wird, um zu überprüfen, ob es etwas im Array gibt. –

+0

Beim Überprüfen der Netzwerkaktivität in Fiddler wird der Tracking-Code in Firefox und IE ordnungsgemäß an Google Analytics gesendet, nicht jedoch in Chrome (getestete Version 17). Es sieht also so aus, als könnten wir das Klickereignis nicht verfolgen, wenn ein Benutzer auf ein Anker-Tag klickt, das eine andere Seite lädt. –

Antwort

1

Wenn Sie die google-analytics.com/ga.js laden -script sie die Variable Array ersetzt _gaq mit einem Objekt. Dieses Objekt hat eine Funktion namens push, in der all die Magie stattfindet.

Wenn Sie diesen Code sehen möchten, können Sie alert(_gaq.push) tun, nachdem ga.js geladen wurde.

Übrigens, wenn Sie Ihre Seiten komprimiert liefern, möchten Sie vielleicht überprüfen, wie Sie die ga.js Skript in shortest possible way.

+0

Also ist das Event-Tracking überhaupt synchron, wenn ga.js geladen ist? Es lässt den onclick-Handler nicht zurückkehren, bis er eine Antwort von GA-Servern erhalten hat oder was? – JtR