[JS] Google-Analytics nicht einbinden, wenn DoNotTrack-Header gesetzt ist
_Lars_
- html
- javascript
- sonstiges
Erstmal ein Hallo in die Runde, ich bin der Neue. Vorweg, Javascript-Kentnisse sind bei mir rundimentär bis nicht vorhanden. 😕
Ich habe eine mit Typo3 erstellte Homepage, bei der im Template GA eingebunden wird:
<!-- Global Site Tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-???????????"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments)};
gtag('js', new Date());
gtag('config', 'UA-???????????', { 'anonymize_ip': true });
</script>
Ideal und gewünscht ist eine serverseitige Lösung, bei der je nach HTTP_DNT-Header das GA-HTML-Schnipsel eingebunden wird, oder nicht. Da ich aber nur Zugriff auf die Template-Datei selbst habe und die Umsetzung noch dauern wird, würde ich gern wissen, ob man das als zwischenzeitlichen Würgaround auch über Javascript lösen kann? In etwa so (ich weiß, daß hier JS- und HTML-Code vermischt sind, es ght nur um die Verdeutlichung, was ich will):
<script>
if(navigator.doNotTrack != 1) {
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-???????????"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments)};
gtag('js', new Date());
gtag('config', 'UA-???????????', { 'anonymize_ip': true });
</script>
}
</script>
Danke für euere Hilfe Lars
hallo
Ideal und gewünscht ist eine serverseitige Lösung, bei der je nach HTTP_DNT-Header das GA-HTML-Schnipsel eingebunden wird, oder nicht.
Die DSGVO gilt auch dann, wenn sich Google (der Chrome Browser) entscheiden sollte, keinen Do-Not-Track Header zu setzen. Dass Google Privacy zurückbaut, wurde jüngst publik.
Deshalb: tracking nur auf explizite User-Erlaubnis! Vertraue nicht auf Browser-Konfiguration.
Das, was Du sagst, ist völlig richtig, hat aber nichts mit meiner Frage zu tun. Ich möchte schlicht und einfach den DoNotTrack-Header honorieren.
Hello,
Das, was Du sagst, ist völlig richtig, hat aber nichts mit meiner Frage zu tun. Ich möchte schlicht und einfach den DoNotTrack-Header honorieren.
Das musst Du mit einer aktiven Behandlung (PHP, Perl, ...) auf dem Server tun, oder indem Du mittels einer Rewrite-Rule auf eine andere Version der Webseite verzweigst.
Das Javascript für die Analytics darf dann einfach nicht eingebunden werden.
Außerdem sollte man dan auch noch die Entscheidung des Clients für/gegen Cookies berücksichtigen.
Glück Auf
Tom vom Berg
Das musst Du mit einer aktiven Behandlung (PHP, Perl, ...) auf dem Server tun,
Wäre auch meine erste Wahl, das ist mit dem TYPO3 aber nicht so leicht umsetzbar.
oder indem Du mittels einer Rewrite-Rule auf eine andere Version der Webseite verzweigst.
Super Hinweis, danke.
Lars
hallo
Das, was Du sagst, ist völlig richtig, hat aber nichts mit meiner Frage zu tun. Ich möchte schlicht und einfach den DoNotTrack-Header honorieren.
Was bedeutet das genau? Jede Antwort ist knifflig und kann bestenfalls nur für 3rd-Party Komponenten eindeutig beantwortet werden.
Praktisch bedeutet es, dass du den Content filtern musst und alle Inhalte von 3rd-Party Ressourcen ausser Links entfernen musst.
Ferner musst du auch überwachen, dass Typo3 unter der Haube das selbst honoriert.
Das, was Du sagst, ist völlig richtig, hat aber nichts mit meiner Frage zu tun. Ich möchte schlicht und einfach den DoNotTrack-Header honorieren.
Was bedeutet das genau? Jede Antwort ist knifflig und kann bestenfalls nur für 3rd-Party Komponenten eindeutig beantwortet werden.
Praktisch bedeutet es, dass du den Content filtern musst und alle Inhalte von 3rd-Party Ressourcen ausser Links entfernen musst.
Ferner musst du auch überwachen, dass Typo3 unter der Haube das selbst honoriert.
Ich danke Dir für die Denkanstöße, das ist mir alles bewußt (auch z.B. Logfiles des HTTP-Servers), aber nicht Inhalt der Frage (und nicht meine Baustelle). Es geht mir einzig um das Template. Ich benötige nur ein wenig Hilfe, mit dem HTML/JS-Code.
@@beatovich
Jede Antwort ist knifflig
Nö. Deine im anderen Thread war’s nicht. 😂
LLAP 🖖
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