überprüft, ob das Google Analytics _gaq-Objekt geladen und verfügbar ist

8

Ich habe einen Google Analytics-Tracking-Code (GATC) auf meiner Website, der Aufrufe der Methode _gaq.push im Google-Code auslöst.

In dem Szenario, in dem GA nicht verfügbar ist oder _gaq nicht geladen wurde, möchte ich sicherstellen, dass auf der Seite keine JavaScript-Fehler vorhanden sind. Wenn Sie überprüfen, ob _gaq nicht mit 'undefined' identisch ist, reicht dies aus, um zu überprüfen, ob es verfügbar ist und ist dieser x-Browser? Ich habe mir die Google-Dokumentation angesehen, aber nichts dazu.

Ich weiß, ob das Objekt null ist, aber ich bin mir nicht sicher, ob das nötig ist.

%Vor%     
crmpicco 16.11.2012, 10:13
quelle

6 Antworten

18

Im empfohlenen JavaScript-Code, den Sie von Analytics erhalten, enthält er die folgende Zeile:

%Vor%

Das Array sollte also immer verfügbar sein, wenn Sie diese Zeile in Ihrem Code behalten. Wenn Sie den Analysecode später hinzufügen, fügen Sie einfach die obige Zeile vor Ihren Hauptscripts hinzu und es wird funktionieren.

Beachten Sie, dass dieses Snippet harmlos ist, auch wenn Sie _gaq vorher definiert haben, da es es nur als neues Array definiert, wenn es zuvor nicht definiert ist.

Dies ist eine großartige Möglichkeit, asynchrone Skripte zu verwenden, das Array wird zuerst lokal definiert, und Sie können bei Bedarf Befehle an dieses Array senden. Wenn das Analysescript geladen wird, kann es diese Befehle verwenden, wenn es gewünscht wird. Es muss also nicht überprüft werden, ob das Array undefiniert oder ähnlich ist.

    
David 16.11.2012, 10:16
quelle
50

Wenn Sie Universal Analytics ( analytics.js ) verwenden, wechseln Sie Folgendes:

%Vor%

dazu:

%Vor%     
Mike 04.07.2013 15:46
quelle
4

Sie müssen im Allgemeinen nicht prüfen, ob es definiert ist, weil das Google Analytics-Code-Snippet dies für Sie erledigt. Wenn Sie jedoch etwas wie Ereignisverfolgung in anderen Abschnitten Ihres Sties tun, wie die Frage zeigt, ist es manchmal gut zu überprüfen, ob das Skript geladen ist, da es asynchron ist.

Ich habe einen jQuery-Plugin-Wrapper für GA geschrieben und wollte den Code einchecken, ob GA tatsächlich installiert war oder nicht, bevor ich versuchte, irgendwelche Daten dorthin zu übertragen. Dies sollte den Fall abdecken, dass jemand versucht hat, das Plugin ohne GA zu benutzen oder bevor GA initialisiert wurde.

%Vor%     
Andy Brudtkuhl 21.02.2013 20:13
quelle
3

Wenn ga.js geladen ist, definiert es ein globales Objekt window._gat (Achte auf T statt Q), du musst nur testen, ob es definiert ist oder nicht (aber pass auf, dass es asynchron geladen wird, dann kannst du es verzögern dein Test).

    
Open SEO 19.11.2012 09:18
quelle
1

Wie @David gesagt hat, solange Sie das var _gaq = _gaq || []; -Snippet zuvor definiert haben, geht es Ihnen gut und Es ist nicht notwendig, zu überprüfen, ob _gaq undefiniert ist.

Der Grund dafür, dass _gaq als leeres Array definiert ist, wenn es zuvor nicht definiert war, ist die Methode push . Dadurch kann Ihr Analysecode ausgeführt werden, bevor der GA-Code geladen wird, oder in einigen Fällen, wenn er nicht verfügbar ist.

Wenn GA geladen wird, wird _gaq als Objekt mit einer push -Methode neu definiert, und alle vorhandenen Inhalte des alten _gaq-Arrays werden ausgeführt.

    
mike 16.11.2012 21:20
quelle
0

Eventuell möchten Sie ein Ereignis-Tracking irgendwo in js hinzufügen, aber das CMS fügt nur Google Analytics für nicht eingeloggte Besucher oder bestimmte Seiten hinzu. Die folgende Überprüfung für die Funktion wird funktionieren:

%Vor%     
Duncanmoo 01.06.2017 13:52
quelle