JürgenB: [JS] Google-Analytics nicht einbinden, wenn DoNotTrack-Header gesetzt ist

Beitrag lesen

Hallo Lars,

in diesem Blog-Artikel geht es zwar um etwas anderes, aber auch hier wird vor Laden eines Scriptes die Zustimmung der Besucher eingeholt. Dazu wird das externe Script per Javascript geladen. Für dich könnte das z.B. so aussehen (ungetestet):

		function loadScript(url,callback) {
			var scr = document.createElement('script');
			scr.type = "text/javascript";
			scr.async = "async";
			if(typeof(callback)=="function") {
				scr.onloadDone = false;
				scr.onload = function() { 
					if ( !scr.onloadDone ) {
						scr.onloadDone = true;
						callback(); 
					}
				};
				scr.onreadystatechange = function() { 
					if ( ( "loaded" === scr.readyState || "complete" === scr.readyState ) && !scr.onloadDone ) {
						scr.onloadDone = true; 
						callback();
					}
				}
			}
			scr.src = url;
			document.getElementsByTagName('head')[0].appendChild(scr);
		} // LoadScript

		if(navigator.doNotTrack != 1) {
			loadScript("https://www.googletagmanager.com/gtag/js?id=UA-???????????", function() {
				window.dataLayer = window.dataLayer || [];
				function gtag(){dataLayer.push(arguments)};
				gtag('js', new Date());
				gtag('config', 'UA-???????????', { 'anonymize_ip': true });
			});
		}

Die Funktion loadScript lädt das externe Script, dessen URL als erster Parameter übergeben wird, und ruft dann die als zweiter Parameter übergebene Funktion auf. Sieh es dir mal, ob du damit was anfangen kannst.

Später kannst du dann die Abfragebedingung erweitern, indem du aktiv die Zustimmung des Users einholst (z.B. wie im Blogartikel) und die Antwort abspeicherst, z.B. im localStorage.

Gruß
Jürgen