2011-01-04 3 views
2

Gibt es eine Möglichkeit, einen Rückruf zu definieren, wenn _trackPageview abgeschlossen ist?Google Analytics _trackPageview Rückruf

Ich habe den folgenden Code zu verfolgen, wenn sich ein Benutzer anmeldet in meine Seite, und die Seite zu aktualisieren danach:

pageTracker._trackPageview('/login/complete'); 
location.reload(true); 

Das Problem mit dem obigen Code ist, dass _trackPageview ein Bild auf das DOM legt und es gibt keine Garantie, dass das Bild geladen wird, bevor die Seite aktualisiert wird.

Antwort

3

die aktuellen Image() Funktion auf der Seite Überschreibung ist eine Lösung:

var oldImage = window.Image; 
    window.Image = function() 
    { 
     var self = this; 
     var theImage = new oldImage(); 
     $(theImage).load(function(){ 
      // Analytics ajax finished 
      // Do something here (submit the form or whatever) 
     }); 
     return theImage; 
    }; 

Aber ich denke tatsächlich, dass Malvolio eine better solution mit _gaq.push() hat, die für das funktionieren wird, was Sie brauchen.

+1

+1. Dies ist eine brillante Antwort. Vielleicht lohnt es sich, es in ein "try/catch" zu verpacken, so dass, wenn etwas im Tracking-Code fehlschlägt, es trotzdem ein Bild zurückgibt? – Yahel

+0

@yc Klingt gut für mich. – Na7coldwater

+1

Ich habe die setTimeout-Methode verwendet, aber ich muss sagen, dass dies absolut brillant ist und funktioniert wie ein Zauber. Wenn es hilft zu folgen, war meine Verwendung: $ (theImage) .load (function() { \t Alarm ($ (this) .attr ("src")); \t/* Das Google Analytics Tracker-Image geladen, Redirect */ \t \t window.location.href = '<%=tabURL%>'; \t}); –

1

Die meisten Implementierungen die ich gesehen habe, indem sie den Reload, um dieses Problem zu umgehen/Umleitung in einem setTimeout() von 500ms-1s