wake-up-neo.com

Jquery und Google Tag Manager

Ich habe einige Probleme beim Implementieren von Google Tag Manager auf meiner Website. Ich habe einen Google-Code und wenn ich ihn auf meiner Website ausprobiere, kommt es zu vielen Konflikten mit Javascript.

Also habe ich versucht, den Code in eine separate Datei zu schreiben, um ihn Schritt für Schritt zu machen und das Verhalten der verschiedenen Skripte zu beobachten.

Also hier meine sehr einfache HTML Seite:

<!DOCTYPE html>
<html>
<head>
    <title>Titre</title>
</head>
<body>
    <!-- Google Tag Manager -->
    <noscript>
    <iframe src="http://www.googletagmanager.com/ns.html?id=GTM-XXXXXX" height="0" width="0" style="display:none;visibility:hidden"></iframe>
    </noscript>
    <script type="text/javascript">
        dataLayer = [{'uid':'12'}];
        (function(w,d,s,l,i){
            w[l]=w[l]||[];
            w[l].Push({'gtm.start': new Date().getTime(),event:'gtm.js'});
            var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';
            j.async=true;
            j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;
            f.parentNode.insertBefore(j,f);
        })(window,document,'script','dataLayer','GTM-XXXXXX');
    </script>
    <!-- End Google Tag Manager -->
    hello
</body>
</html>

Und genau diese Seite gibt einen Fehler in der JS-Konsole zurück:

Uncaught ReferenceError: jQuery is not defined

Nun, das ist unerwartet, was hat jQuery hier zu tun? Ich habe es nicht einmal in meinem Body-Tag deklariert. Benötigt Google jQuery?

Das war also seltsam und das Zweite, wenn ich nach dem Laden in einem Browser auf meine generierte HTML-Seite schaue:

<body>
... Long stuff here
<script type="text/javascript" id="" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
... some other stuff here
</body>

Was für eine Art von Zauberei ist das? Warum fügt Google am Ende meiner Seite eine JQuery-Nachricht hinzu und warum zeigt mir meine Konsole einen JQuery-Fehler an?

Vielen Dank für jede Art von Information, ich bin total verloren ... Und einen schönen Tag noch!

6
Hammerbot

Endlich habe ich die Lösung gefunden, wie es in einer anderen Frage heißt: jQuery wurde vom googletagmanager injiziert und von der Webagentur konfiguriert, die den google tag manager konfiguriert hat.

Wenn Sie also das gleiche Problem haben, rufen Sie Ihre Webagentur an ...

Wenn Sie den Tag-Manager selbst konfiguriert haben, überprüfen Sie Ihre Einstellungen in der Google Tag Manager-Benutzeroberfläche.

4
Hammerbot

Simo Ahava hat in den Google Tag Manager-Foren diese Art von Frage beantwortet:

Warum jQuery möglicherweise nicht definiert ist

Grundsätzlich sagt er, dass GTM jQuery nicht standardmäßig lädt.

Selbst wenn Ihre Seite es lädt, wird das GTM-Tag, das es verwendet, möglicherweise vor dem Laden von jQuery auf der Seite ausgelöst.

Sie können Ihren jQuery-Code entweder warten lassen, bis die Bibliothek geladen ist, oder ihn in das benutzerdefinierte HTML-Tag laden.

3
Aaron

Wie bereits erwähnt, wird GTM möglicherweise geladen, bevor die jQuery der Seite geladen wird. Das bedeutet, dass, wenn Sie jQuery in dem über GTM injizierten Skript verwenden, abhängig von der Ladestrategie der Browser-Ressource möglicherweise ein "Uncaught ReferenceError: jQuery ist nicht definiert" generiert wird.

Sie müssen jedoch sicherstellen, dass jQuery vor dem GTM-Skript geladen ist. Sie können dies entweder tun:

  1. steuern der Reihenfolge des Ladens von Skripten
  2. verwenden eines Hacks wie der Verwendung einer setInterval-Schleife, bis jQUery verfügbar ist:
var func = function() {
    if (jQuery) {  
        clearInterval(timer);
        // do your stuff
    }
}
var timer = setInterval(func, 1000);
1
Anoyz