Ich versuche, die Klicks bestimmter Download-Links zu erfassen und sie in Google Analytics zu verfolgen. Hier ist mein CodeProblem beim Ausführen von trackPageview mit Google Analytics
var links = document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
linkpath = links[i].pathname;
if(linkpath.match(/\.(pdf|xls|ppt|doc|zip|txt)$/) || links[i].href.indexOf("mode=pdf") >=0){
//this matches our search
addClickTracker(links[i]);
}
}
function addClickTracker(obj){
if (obj.addEventListener) {
obj.addEventListener('click', track , true);
} else if (obj.attachEvent) {
obj.attachEvent("on" + 'click', track);
}
}
function track(e){
linkhref = (e.srcElement) ? e.srcElement.pathname : this.pathname;
pageTracker._trackPageview(linkhref);
}
Alles bis zum Aufruf der pageTracker._trackPageview() funktioniert. In meinem Debugging wird Linkhref als String übergeben. Keine ungewöhnlichen Charaktere, nichts. Das Problem ist, dass Google, wenn er meine http-Anfragen beobachtet, niemals einen zweiten Aufruf an das Tracking-GIF sendet (wie es der Fall ist, wenn Sie diese Funktion in einer "onclick" -Eigenschaft aufrufen). Das Aufrufen des Trackers über meine JS-Konsole funktioniert ebenfalls wie erwartet. Es ist nur in meinem Zuhörer.
Kann es sein, dass mein Listener die Standardaktion (Laden der neuen Seite) nicht verzögert, bevor er die Google-Server kontaktieren kann? Ich habe andere Tracking-Skripts gesehen, die eine ähnliche Funktion ohne Verzögerung ausführen. Versuchen
Ja hilft, habe ich versucht, einen statischen Weg Tracking, wie Sie vorgeschlagen, die entweder nicht funktioniert hat. Stellen Sie sicher, dass GA vor diesem Skript geladen wurde und keine Würfel. – dmrnj
Ich habe das Gefühl, dass ich diese Frage ein Update verdanke, da es fast ein Jahr später ist und ich dieses Problem viele Male erlebt habe. Mein _pageTracker-Objekt verwendete _setDomainName(), aber ich habe diesen Code lokal versucht. Wenn die Domäne kollidiert, lädt das Tracking-JS offensichtlich, aber das Tracking-Pixel wird nie aufgerufen. – dmrnj