Browse Source

Merge pull request #144 from eldk/isDNTRequested

add DNT DoNotTrack Support
Amauri CHAMPEAUX 7 years ago
parent
commit
77c5274032
2 changed files with 12 additions and 1 deletions
  1. 1 0
      README.md
  2. 11 1
      tarteaucitron.js

+ 1 - 0
README.md

@@ -120,6 +120,7 @@ tarteaucitron.init({
     "showAlertSmall": true, /* afficher le petit bandeau en bas à droite ? */
     "cookieslist": true, /* Afficher la liste des cookies installés ? */
     "removeCredit": false, /* supprimer le lien vers la source ? */
+    "handleBrowserDNTRequest": false, /* Répondre au DoNotTrack du navigateur ?*/
     "cookieDomain": ".my-multisite-domaine.fr" /* Nom de domaine sur lequel sera posé le cookie - pour les multisites / sous-domaines - Facultatif */
 });
 </script>

+ 11 - 1
tarteaucitron.js

@@ -183,7 +183,8 @@ var tarteaucitron = {
                 "orientation": "top",
                 "removeCredit": false,
                 "showAlertSmall": true,
-                "cookieslist": true
+                "cookieslist": true,
+                "handleBrowserDNTRequest": false
             },
             params = tarteaucitron.parameters;
         
@@ -196,6 +197,7 @@ var tarteaucitron = {
         tarteaucitron.orientation = defaults.orientation;
         tarteaucitron.hashtag = defaults.hashtag;
         tarteaucitron.highPrivacy = defaults.highPrivacy;
+        tarteaucitron.handleBrowserDNTRequest = defaults.handleBrowserDNTRequest;
 
         // Step 1: load css
         linkElement.rel = 'stylesheet';
@@ -408,6 +410,7 @@ var tarteaucitron = {
             isDenied = (cookie.indexOf(service.key + '=false') >= 0) ? true : false,
             isAllowed = (cookie.indexOf(service.key + '=true') >= 0) ? true : false,
             isResponded = (cookie.indexOf(service.key + '=false') >= 0 || cookie.indexOf(service.key + '=true') >= 0) ? true : false;
+            isDNTRequested = (navigator.doNotTrack === "1" || navigator.doNotTrack === "yes" || navigator.msDoNotTrack === "1" || window.doNotTrack === "1") ? true : false;
 
         if (tarteaucitron.added[service.key] !== true) {
             tarteaucitron.added[service.key] = true;
@@ -465,6 +468,13 @@ var tarteaucitron = {
             }
             tarteaucitron.state[service.key] = false;
             tarteaucitron.userInterface.color(service.key, false);
+        } else if (!isResponded && isDNTRequested && tarteaucitron.handleBrowserDNTRequest) {
+            tarteaucitron.cookie.create(service.key, 'false');
+            if (typeof service.fallback === 'function') {
+                service.fallback();
+            }
+            tarteaucitron.state[service.key] = false;
+            tarteaucitron.userInterface.color(service.key, false);
         } else if (!isResponded) {
             tarteaucitron.cookie.create(service.key, 'wait');
             if (typeof service.fallback === 'function') {