Camping_RIDER: Cookie Zustimmung abfragen richtig einbauen...

Beitrag lesen

Aloha ;)

ich möchte erst dann Besucherdaten per Analytics tracken, wenn mir diese Besucher eine Zustimmung dazu gegeben haben.

So weit, so löblich.

Ich habe dazu folgende Sachen eingebaut:

<script type="text/javascript">
	  window.CookieHinweis_options = {
	  message: 'Online-Skillmatrix nutzt Cookies, um bestmögliche Funktionalität bieten zu können.',
	  agree: 'Ok, verstanden',
	  learnMore: 'Mehr Infos',
	  link: '/datenschutz',
	  theme: 'dunkel-oben'
	 };
	</script>
	<script type="text/javascript" src="https://s3.eu-central-1.amazonaws.com/website-tutor/cookiehinweis/script.js"></script>

Du möchtest also das Tracking durch Google Analytics bis zum OptIn verhindern und bindest dafür ein Script ein, das von einem Amazon-Web-Services-Server geladen wird? 😂

Vielleicht solltest du an der Stelle auf die Einbindung jeglicher Fremdquellen verzichten bis du ein entsprechendes OptIn-Cookie gesetzt hast.

Dazu kommt, dass ich dir zur Funktionalität dieses Scripts nichts sagen kann; das verlinkte Script ist nicht wirklich menschenlesbar.

Aber das scheint ja bei dir zu funktionieren (auch wenn ich dir WIRKLICH nahelege, das Skript wenigstens auf deine eigene Domain zu kopieren), denn du schreibst ja:

Das Ding wird solange eingeblendet, bis der Webseiten Besucher auf "Ok, verstanden" klickt.

Soweit so gut also. Fast. Denn das ominöse von dir eingebundene Skript, dessen Funktionalität nicht einfach nachzuvollziehen ist, hat dann zwar was getan, aber du weißt nicht was.

Vermutlich hat es selbst ein Cookie gesetzt. Oder irgendwo im localStorage was abgelegt. Oder es hat eine weitere Option für einen Callback. Oder so. Kann ich dir nicht sagen - denn wie gesagt ist für mich nicht nachvollziehbar, was das Skript tut.

Das wäre dann von dir noch herauszufinden, damit du weiterkommst.

Mein Google Tracking Zeug mache ich wie folgt:

	    var gaProperty = 'UA-xxx-1'; 
	    var disableStr = 'ga-disable-' + gaProperty; 
	    if (document.cookie.indexOf(disableStr + '=true') > -1) { 
	        window[disableStr] = true;
	    } 
	    function gaOptout() { 
	        document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/'; 
	        window[disableStr] = true; 
	        alert('Das Tracking ist jetzt deaktiviert'); 
	    } 
	    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
	            (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
	        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
	    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 
	
	    ga('create', 'UA-xxx-1', 'auto'); 
	    ga('set', 'anonymizeIp', true); 
	    ga('send', 'pageview'); 

Derzeit wird leider auch getrackt, wenn Besucher dem Cookie Hinweis nicht zugestimmt haben.

Richtig, denn die von dir hier gewählte Lösung ist ein OptOut, kein OptIn.

Habt ihr eine Idee, wie ich das Tracking Script so in mein Cookie Formular integrieren kann, dass erst nach Zustimmung getrackt wird?

So schnell mal "quick and dirty" hätte ich eine Idee, die nicht viel "Umschreiben" braucht. Dabei rufst du direkt nach der Definition von gaOptout (und damit noch vor dem Einbinden von GA selbst) die Funktion gaOptout auf. Also so:


function gaOptout() { 
  /*Funktionsdefinition*/
} 
gaOptout();
(function(i,s,o,g,r,a,m){/*irgendwas*/})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

Damit ist schonmal jeder User standardmäßig vom Tracking ausgenommen. (Natürlich könntest du die Funktion auch entfernen und einfach das was innerhalb der Funktion steht direkt ausführen, aber so kannst du die Funktion vielleicht benutzen falls du sie je nochmal brauchst.)

Dann musst du dich darüber informieren, was dein Drittanbieter-Skript von oben tut bzw. wo du dem noch was auftragen kannst, was es tun soll, sobald der Benutzer auf "Ok, verstanden" drückt (Ok, einverstanden ist übrigens sicher eine sinnvollere Beschriftung!).

Wenn du das herausgefunden hast, sorgst du dafür, dass dort eine Optin-Funktion aufgerufen wird, die in etwa so aussieht:

function gaOptin() {
  if (window[disableStr]) {
    let oldCookie = document.cookie;
    let needle = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/'; 
    document.cookie = oldCookie.substring(0,oldCookie.indexOf(needle)) + oldCookie.substring(oldCookie.indexOf(needle)+needle.length); 
    window[disableStr] = false; 
  }
  alert('Das Tracking ist jetzt aktiviert'); 
} 

Kurze Erklärung zum Code: Falls das disable-Cookie gesetzt ist ersetze das Cookie durch alle Teile vor und nach dem disable-Cookie.

Leider ist mir nicht ganz klar, wie ich diesen Code richtig einbaue bzw. benutze... :/

Ich hoffe das was ich schrieb hilft dir weiter.

Grüße,

RIDER

Disclaimer: Den Code habe ich nach bestem Wissen und Gewissen zusammengeschrieben, aber nicht getestet.

--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
# Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[