it-swarm.com.de

Verwenden von asynchronem Google Analytics-Code aus einer externen JS-Datei

Ich versuche, die asynchrone Version des Google Analytics-Tracking-Codes einer Website hinzuzufügen.

Ich möchte das JavaScript in einer separaten Datei aufbewahren und es von dort aus aufrufen.

Folgendes habe ich derzeit in meiner .js-Datei:

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}

function loadtracking() {
    var _gaq = _gaq || [];
        _gaq.Push(['_setAccount', 'UA-XXXXXXX-X']);
        _gaq.Push(['_trackPageview']);

        (function() {
            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
        })();
}

addLoadEvent(loadtracking);

Und das habe ich im <head>-Tag meiner Masterseite:

<script type="text/javascript" src="js/google-analytics.js" ></script>

Es gibt jedoch offensichtlich ein Problem, da ich nach einigen Tagen keine Statistiken mehr bekomme!

Irgendwelche Ideen, was ich ändern muss?

Danke, Neil


EDIT: Ok ... Nach einiger Rückmeldung füge ich den new aktuellen Inhalt meiner JS-Datei hinzu. Ich halte es auf dem neuesten Stand, so dass, wenn dies gelöst wird, es hoffentlich anderen Menschen helfen wird, ähnliche Dinge zu tun.

var _gaq = _gaq || [];

function loadtracking() {
        window._gaq.Push(['_setAccount', 'UA-XXXXXXX-X']);
        window._gaq.Push(['_trackPageview']);

        (function() {
            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
        })();
}

loadtracking();
30
NeilD

Ihre Variablendefinition var _gaq befindet sich in einer Funktion. Das heißt, es ist lokal innerhalb dieser Funktion und nicht global vorhanden. Google Analytics hängt von der globalen Variablen _gaq ab. Wenn Sie es in einer solchen Funktion behalten möchten, verweisen Sie es als window._gaq.

23
Brian

Sie verfehlen den Punkt des asynchronen Tracking-Codes vollständig. Legen Sie es nicht in eine externe Datei, da dies genau so ist wie die alte synchrone GA.

Und vor allem sollten Sie den Tracking-Code nicht auf window.onload verschieben, da er möglicherweise zu spät ausgelöst wird.

Wenn Sie das asynchrone GA verwenden, fügen Sie es einfach in ein Inline-Skript-Tag ein. Dies ist die empfehlung auf Google Analytics-Website .

Fügen Sie das asynchrone Snippet am Ende des <head>-Abschnitts Ihrer -Seiten ein. Nach allen anderen Skripts, die Ihre -Seite oder -Vorlage möglicherweise verwendet.

14
gblazex

Ehrlich gesagt habe ich nicht alle diese Beiträge gelesen, da sie ziemlich alt sind. Ich hatte jedoch vor kurzem die Notwendigkeit, Gtag (google Tag Manager für Analytics Tracking) zu einer alten Website hinzuzufügen, die aus 1000 statischen HTML-Dateien bestand, und (LUCKILY). Die HTML-Dateien hatten eine einzige Include-JS-Datei für die Spry-Menüleiste, wie z sagte sehr alte Seite! Für meine Zwecke habe ich mir keine Sorgen um die Leistung gemacht, sondern um den Verkehr zu messen, damit wir ihn migrieren können. Ihr Fall kann anders sein, aber der unten stehende Code funktioniert für externe Js-Includes von Gtag.

Ich habe diese Datei verwendet, um den folgenden Code zu laden, da der obige Code für ältere ga.js gilt

//Added Google Anyltics Tag Container Tracking - included here to min rebuilding DOM 

function loadGoogleAnalytics(){
    var ga = document.createElement('script'); 
    ga.type = 'text/javascript'; 
    ga.async = true;
    ga.src = 'https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXXX-X';

    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(ga, s);
}

loadGoogleAnalytics(); //Create the script 

window.dataLayer = window.dataLayer || [];

function gtag(){dataLayer.Push(arguments);}

gtag('js', new Date());

gtag('config', 'UA-XXXXXXXXX-1');
//Confirmed with Google tag Assistant
0