2 Stimmen

Die Google Analytics pageTracker-Funktion funktioniert nicht, wenn sie über AJAX geladen wird

Ich habe vor einiger Zeit einen Beitrag zu diesem Thema verfasst und seither weitere Nachforschungen angestellt und das Problem weiterentwickelt, aber ich habe immer noch keine Lösung...

Ich habe eine Website (www.seatgeek.com), auf der eine Menge Links über AJAX geladen werden. Wenn ein Benutzer auf einen dieser Links klickt, möchte ich es als ein Ziel zählen, also habe ich versucht, pageTracker._trackPageview() an das onClick-Attribut der Links anzuhängen. Aber GA zeichnet diese Klicks nicht auf, und ich habe keine Ahnung warum. Hier ist der Code für einen dieser Links:

<a href="<?php echo $tickets[$x][3] ?>" target = "_blank" class="buyTicketsLink" onClick="pageTracker._trackPageview('/outgoing/event4.php');">BUY TICKETS</a>

Ich habe den obigen Code in Situationen ausprobiert, in denen der Link nicht über AJAX geladen wird, und er funktioniert einwandfrei, es ist also definitiv ein AJAX-spezifisches Problem. Außerdem habe ich bei meinen Versuchen, dieses Problem zu lösen, auch versucht, die Onclick-Ereignisse programmatisch hinzuzufügen, z. B.:

<script>
function attach_goal_tracking() {
var links = document.getElementsByClassName("buyTicketsLink");
for(var i=0; i<links.length; i++) {
links[i].onclick = record_goal;
}
}

function record_goal() {
pageTracker._trackPageview('/event/outgoing');
}
</script>

Auch das funktioniert nicht. Aber wenn ich der Funktion record_goal() ein Test-Warnfeld hinzufüge, ist es klar, dass die Funktion ausgeführt wird. Wenn ich zum Beispiel die Funktion in diese ändere:

function record_goal() {
alert('Hello');
pageTracker._trackPageview('/event/outgoing');
}

Dann wird das "Hallo"-Warnfeld angezeigt, wenn ein Link angeklickt wird. Aber der Seitenaufruf zu "/event/outgoing" wird immer noch nicht aufgezeichnet.

Ich bin völlig verblüfft, was die Ursache dafür sein könnte. Für jeden Ratschlag wäre ich sehr dankbar.

1 Stimmen

Warum haben Sie eine separate Frage gestellt, anstatt Ihre vorherige Frage zu bearbeiten? stackoverflow.com/questions/1554486/

1voto

Prem Punkte 15013

Verwenden Sie eine JavaScript-Bibliothek wie z. B. Prototype? document.getElementsByClassName ist keine Standard-JavaScript-DOM-Methode.

Erhalten Sie irgendwelche JavaScript-Fehler? Öffnen Sie z. B. Firebug oder die Firefox-Fehlerkonsole.

In Firebug, wenn Sie eingeben pageTracker; in der Konsole, sagt sie Ihnen, dass pageTracker ist definitiv eine Funktion und nicht undefined ?

1voto

Lauren Punkte 121

Versuchen Sie, "return false" nach Ihrem trackPageView()-Aufruf hinzuzufügen, also...

onClick="pageTracker._trackPageview('/outgoing/event4.php'); return false">

Unser Analytiker hat mir das empfohlen und es hat wunderbar funktioniert. "return false" sagt normalerweise: "Hey, beachte die href nicht" (dachte ich jedenfalls), aber meine Implementierung funktioniert einwandfrei.

Ich hoffe, das hilft!

1voto

Dg Jacquard Punkte 1080

Wenn Sie noch die asynchrone Methode zum Laden von Google Analytics zu verwenden, erfüllt das folgende Snippet die gleiche Aufgabe:

\_gaq.push(\['\_trackPageview', '/anything'\]);

oder (@Lauren code)

onClick="\_gaq.push(\['\_trackPageview', '/outgoing/event4.php'\]); return false">

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X