Parcourir la source

Merge branch 'AmauriC:master' into nr-fix_missing_var_declaratino

Nicolas Rosset il y a 4 ans
Parent
commit
25d6bd5ab6
3 fichiers modifiés avec 170 ajouts et 57 suppressions
  1. 8 0
      css/tarteaucitron.css
  2. 34 25
      tarteaucitron.js
  3. 128 32
      tarteaucitron.services.js

+ 8 - 0
css/tarteaucitron.css

@@ -13,6 +13,14 @@ span.tarteaucitronReadmoreSeparator {
 }
 }
 /******/
 /******/
 
 
+/** 09052021 **/
+.tarteaucitronName .tacCurrentStatus, .tarteaucitronName .tarteaucitronReadmoreSeparator {
+    color: #333!important;
+    font-size: 12px!important;
+    text-transform: capitalize;
+}
+/**************/
+
 /** 27032021 **/
 /** 27032021 **/
 button.tarteaucitron-toggle-group {
 button.tarteaucitron-toggle-group {
     display: block;
     display: block;

+ 34 - 25
tarteaucitron.js

@@ -17,7 +17,7 @@ var scripts = document.getElementsByTagName('script'),
 
 
 
 
 var tarteaucitron = {
 var tarteaucitron = {
-    "version": 20210422,
+    "version": 20210509,
     "cdn": cdn,
     "cdn": cdn,
     "user": {},
     "user": {},
     "lang": {},
     "lang": {},
@@ -517,13 +517,13 @@ var tarteaucitron = {
                         var tacRootAvailableEvent;
                         var tacRootAvailableEvent;
                         if(typeof(Event) === 'function') {
                         if(typeof(Event) === 'function') {
                             tacRootAvailableEvent = new Event("tac.root_available");
                             tacRootAvailableEvent = new Event("tac.root_available");
-                        }else{
+                        }else if (typeof(document.createEvent) === 'function'){
                             tacRootAvailableEvent = document.createEvent('Event');
                             tacRootAvailableEvent = document.createEvent('Event');
                             tacRootAvailableEvent.initEvent("tac.root_available", true, true);
                             tacRootAvailableEvent.initEvent("tac.root_available", true, true);
                         }
                         }
                         //end ie compatibility
                         //end ie compatibility
 
 
-                        window.dispatchEvent(tacRootAvailableEvent);
+                        if (typeof(window.dispatchEvent) === 'function') {window.dispatchEvent(tacRootAvailableEvent);}
 
 
                         if (tarteaucitron.job !== undefined) {
                         if (tarteaucitron.job !== undefined) {
                             tarteaucitron.job = tarteaucitron.cleanArray(tarteaucitron.job);
                             tarteaucitron.job = tarteaucitron.cleanArray(tarteaucitron.job);
@@ -761,9 +761,10 @@ var tarteaucitron = {
 
 
             html += '<li id="' + service.key + 'Line" class="tarteaucitronLine">';
             html += '<li id="' + service.key + 'Line" class="tarteaucitronLine">';
             html += '   <div class="tarteaucitronName">';
             html += '   <div class="tarteaucitronName">';
-            html += '       <span class="tarteaucitronH3" role="heading" aria-level="3">' + service.name + ' (<span id="tacCurrentStatus' + service.key + '">'+currentStatus+'</span>)</span>';
+            html += '       <span class="tarteaucitronH3" role="heading" aria-level="3">' + service.name + '</span>';
+            html += '       <span class="tacCurrentStatus" id="tacCurrentStatus' + service.key + '">'+currentStatus+'</span>';
+            html += '       <span class="tarteaucitronReadmoreSeparator"> - </span>';
             html += '       <span id="tacCL' + service.key + '" class="tarteaucitronListCookies"></span><br/>';
             html += '       <span id="tacCL' + service.key + '" class="tarteaucitronListCookies"></span><br/>';
-
             if (tarteaucitron.parameters.moreInfoLink == true) {
             if (tarteaucitron.parameters.moreInfoLink == true) {
 
 
                 var link = 'https://tarteaucitron.io/service/' + service.key + '/';
                 var link = 'https://tarteaucitron.io/service/' + service.key + '/';
@@ -862,7 +863,7 @@ var tarteaucitron = {
             var send_event_item;
             var send_event_item;
             if(typeof(Event) === 'function') {
             if(typeof(Event) === 'function') {
                 send_event_item = new Event(event_key);
                 send_event_item = new Event(event_key);
-            }else{
+            }else if (typeof(document.createEvent) === 'function'){
                 send_event_item = document.createEvent('Event');
                 send_event_item = document.createEvent('Event');
                 send_event_item.initEvent(event_key, true, true);
                 send_event_item.initEvent(event_key, true, true);
             }
             }
@@ -923,13 +924,13 @@ var tarteaucitron = {
         },
         },
         "addClass": function (id, className) {
         "addClass": function (id, className) {
             "use strict";
             "use strict";
-            if (document.getElementById(id) !== null) {
+            if (document.getElementById(id) !== null && document.getElementById(id).classList !== undefined) {
                 document.getElementById(id).classList.add(className);
                 document.getElementById(id).classList.add(className);
             }
             }
         },
         },
         "removeClass": function (id, className) {
         "removeClass": function (id, className) {
             "use strict";
             "use strict";
-            if (document.getElementById(id) !== null) {
+            if (document.getElementById(id) !== null && document.getElementById(id).classList !== undefined) {
                 document.getElementById(id).classList.remove(className);
                 document.getElementById(id).classList.remove(className);
             }
             }
         },
         },
@@ -1028,11 +1029,11 @@ var tarteaucitron = {
             if (key !== "") {
             if (key !== "") {
 
 
             if (status === true) {
             if (status === true) {
-                document.getElementById(key + 'Line').classList.add('tarteaucitronIsAllowed');
-                document.getElementById(key + 'Line').classList.remove('tarteaucitronIsDenied');
+                tarteaucitron.userInterface.addClass(key + 'Line', 'tarteaucitronIsAllowed');
+                tarteaucitron.userInterface.removeClass(key + 'Line', 'tarteaucitronIsDenied');
             } else if (status === false) {
             } else if (status === false) {
-                document.getElementById(key + 'Line').classList.remove('tarteaucitronIsAllowed');
-                document.getElementById(key + 'Line').classList.add('tarteaucitronIsDenied');
+                tarteaucitron.userInterface.removeClass(key + 'Line', 'tarteaucitronIsAllowed');
+                tarteaucitron.userInterface.addClass(key + 'Line', 'tarteaucitronIsDenied');
             }
             }
 
 
             // check if all services are allowed
             // check if all services are allowed
@@ -1141,7 +1142,9 @@ var tarteaucitron = {
             tarteaucitron.userInterface.css('tarteaucitronCookiesListContainer', 'display', 'none');
             tarteaucitron.userInterface.css('tarteaucitronCookiesListContainer', 'display', 'none');
 
 
             document.getElementById('tarteaucitronClosePanel').focus();
             document.getElementById('tarteaucitronClosePanel').focus();
-            document.getElementsByTagName('body')[0].classList.add('tarteaucitron-modal-open');
+            if (document.getElementsByTagName('body')[0].classList !== undefined) {
+                document.getElementsByTagName('body')[0].classList.add('tarteaucitron-modal-open');
+            }
             tarteaucitron.userInterface.focusTrap();
             tarteaucitron.userInterface.focusTrap();
             tarteaucitron.userInterface.jsSizing('main');
             tarteaucitron.userInterface.jsSizing('main');
 
 
@@ -1149,13 +1152,13 @@ var tarteaucitron = {
             var tacOpenPanelEvent;
             var tacOpenPanelEvent;
             if(typeof(Event) === 'function') {
             if(typeof(Event) === 'function') {
                 tacOpenPanelEvent = new Event("tac.open_panel");
                 tacOpenPanelEvent = new Event("tac.open_panel");
-            }else{
+            }else if (typeof(document.createEvent) === 'function'){
                 tacOpenPanelEvent = document.createEvent('Event');
                 tacOpenPanelEvent = document.createEvent('Event');
                 tacOpenPanelEvent.initEvent("tac.open_panel", true, true);
                 tacOpenPanelEvent.initEvent("tac.open_panel", true, true);
             }
             }
             //end ie compatibility
             //end ie compatibility
 
 
-            window.dispatchEvent(tacOpenPanelEvent);
+            if (typeof(window.dispatchEvent) === 'function') {window.dispatchEvent(tacOpenPanelEvent);}
         },
         },
         "closePanel": function () {
         "closePanel": function () {
             "use strict";
             "use strict";
@@ -1182,19 +1185,21 @@ var tarteaucitron = {
             if (document.getElementById('tarteaucitronCloseAlert') !== null) {
             if (document.getElementById('tarteaucitronCloseAlert') !== null) {
                 document.getElementById('tarteaucitronCloseAlert').focus();
                 document.getElementById('tarteaucitronCloseAlert').focus();
             }
             }
-            document.getElementsByTagName('body')[0].classList.remove('tarteaucitron-modal-open');
+            if (document.getElementsByTagName('body')[0].classList !== undefined) {
+                document.getElementsByTagName('body')[0].classList.remove('tarteaucitron-modal-open');
+            }
 
 
             //ie compatibility
             //ie compatibility
             var tacClosePanelEvent;
             var tacClosePanelEvent;
             if(typeof(Event) === 'function') {
             if(typeof(Event) === 'function') {
                 tacClosePanelEvent = new Event("tac.close_panel");
                 tacClosePanelEvent = new Event("tac.close_panel");
-            }else{
+            }else if (typeof(document.createEvent) === 'function'){
                 tacClosePanelEvent = document.createEvent('Event');
                 tacClosePanelEvent = document.createEvent('Event');
                 tacClosePanelEvent.initEvent("tac.close_panel", true, true);
                 tacClosePanelEvent.initEvent("tac.close_panel", true, true);
             }
             }
             //end ie compatibility
             //end ie compatibility
 
 
-            window.dispatchEvent(tacClosePanelEvent);
+            if (typeof(window.dispatchEvent) === 'function') {window.dispatchEvent(tacClosePanelEvent);}
         },
         },
         "focusTrap": function() {
         "focusTrap": function() {
             "use strict";
             "use strict";
@@ -1249,7 +1254,7 @@ var tarteaucitron = {
             var tacOpenAlertEvent;
             var tacOpenAlertEvent;
             if(typeof(Event) === 'function') {
             if(typeof(Event) === 'function') {
                 tacOpenAlertEvent = new Event("tac.open_alert");
                 tacOpenAlertEvent = new Event("tac.open_alert");
-            }else{
+            }else if (typeof(document.createEvent) === 'function'){
                 tacOpenAlertEvent = document.createEvent('Event');
                 tacOpenAlertEvent = document.createEvent('Event');
                 tacOpenAlertEvent.initEvent("tac.open_alert", true, true);
                 tacOpenAlertEvent.initEvent("tac.open_alert", true, true);
             }
             }
@@ -1259,7 +1264,7 @@ var tarteaucitron = {
                 document.getElementById('tarteaucitronAlertBig').focus();
                 document.getElementById('tarteaucitronAlertBig').focus();
             }
             }
 
 
-            window.dispatchEvent(tacOpenAlertEvent);
+            if (typeof(window.dispatchEvent) === 'function') {window.dispatchEvent(tacOpenAlertEvent);}
         },
         },
         "closeAlert": function () {
         "closeAlert": function () {
             "use strict";
             "use strict";
@@ -1275,13 +1280,13 @@ var tarteaucitron = {
             var tacCloseAlertEvent;
             var tacCloseAlertEvent;
             if(typeof(Event) === 'function') {
             if(typeof(Event) === 'function') {
                 tacCloseAlertEvent = new Event("tac.close_alert");
                 tacCloseAlertEvent = new Event("tac.close_alert");
-            }else{
+            }else if (typeof(document.createEvent) === 'function'){
                 tacCloseAlertEvent = document.createEvent('Event');
                 tacCloseAlertEvent = document.createEvent('Event');
                 tacCloseAlertEvent.initEvent("tac.close_alert", true, true);
                 tacCloseAlertEvent.initEvent("tac.close_alert", true, true);
             }
             }
             //end ie compatibility
             //end ie compatibility
 
 
-            window.dispatchEvent(tacCloseAlertEvent);
+            if (typeof(window.dispatchEvent) === 'function') {window.dispatchEvent(tacCloseAlertEvent);}
         },
         },
         "toggleCookiesList": function () {
         "toggleCookiesList": function () {
             "use strict";
             "use strict";
@@ -1529,9 +1534,13 @@ var tarteaucitron = {
             var i;
             var i;
 
 
             for (i = 0; i < arr.length; i += 1) {
             for (i = 0; i < arr.length; i += 1) {
-                document.cookie = arr[i] + '=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/;';
-                document.cookie = arr[i] + '=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/; domain=.' + location.hostname + ';';
-                document.cookie = arr[i] + '=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/; domain=.' + location.hostname.split('.').slice(-2).join('.') + ';';
+
+                var rgxpCookie = new RegExp("^(.*;)?\\s*" + arr[i] + "\\s*=\\s*[^;]+(.*)?$");
+                if (document.cookie.match(rgxpCookie)) {
+                    document.cookie = arr[i] + '=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/;';
+                    document.cookie = arr[i] + '=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/; domain=.' + location.hostname + ';';
+                    document.cookie = arr[i] + '=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/; domain=.' + location.hostname.split('.').slice(-2).join('.') + ';';
+                }
             }
             }
         },
         },
         "checkCount": function (key) {
         "checkCount": function (key) {

+ 128 - 32
tarteaucitron.services.js

@@ -15,9 +15,10 @@ tarteaucitron.services.iframe = {
             var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title")),
             var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title")),
                 width = x.getAttribute("width"),
                 width = x.getAttribute("width"),
                 height = x.getAttribute("height"),
                 height = x.getAttribute("height"),
+                allowfullscreen = x.getAttribute("allowfullscreen"),
                 url = x.getAttribute("data-url");
                 url = x.getAttribute("data-url");
 
 
-            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="no" allowtransparency allowfullscreen></iframe>';
+            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="no" allowtransparency' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
         });
         });
     },
     },
     "fallback": function () {
     "fallback": function () {
@@ -31,6 +32,70 @@ tarteaucitron.services.iframe = {
     }
     }
 };
 };
 
 
+
+// elfsight
+tarteaucitron.services.elfsight = {
+    "key": "elfsight",
+    "type": "support",
+    "name": "Elfsight",
+    "uri": "https://elfsight.com/privacy-policy/",
+    "needConsent": true,
+    "cookies": ['__cfduid', '_p_hfp_client_id', 'session_id'],
+    "js": function () {
+        "use strict";
+
+        tarteaucitron.addScript('https://apps.elfsight.com/p/platform.js');
+    }
+};
+
+// plezi
+tarteaucitron.services.plezi = {
+    "key": "plezi",
+    "type": "analytic",
+    "name": "Plezi",
+    "uri": "https://www.plezi.co/fr/mentions-legales/",
+    "needConsent": true,
+    "cookies": [],
+    "js": function () {
+        "use strict";
+
+        if (tarteaucitron.user.pleziTenant === undefined || tarteaucitron.user.pleziTw === undefined) {
+            return;
+        }
+
+        tarteaucitron.addScript('https://app.plezi.co/scripts/ossleads_analytics.js?tenant=' + tarteaucitron.user.pleziTenant + '&tw=' + tarteaucitron.user.pleziTw);
+    }
+};
+
+
+// smartsupp
+tarteaucitron.services.smartsupp = {
+    "key": "smartsupp",
+    "type": "support",
+    "name": "Smartsupp",
+    "uri": "https://www.smartsupp.com/help/privacy/",
+    "needConsent": true,
+    "cookies": ['ssupp.vid', 'ssupp.visits', 'AWSALB', 'AWSALBCORS'],
+    "js": function () {
+        "use strict";
+
+        if (tarteaucitron.user.smartsuppKey === undefined) {
+            return;
+        }
+
+        window._smartsupp = window._smartsupp || {};
+        window._smartsupp.key = tarteaucitron.user.smartsuppKey;
+        window.smartsupp = function() {
+            window.smartsupp._.push(arguments)
+        };
+        window.smartsupp._ = [];
+
+        tarteaucitron.addScript('https://www.smartsuppchat.com/loader.js');
+    }
+};
+
+
+
 // sharpspring
 // sharpspring
 tarteaucitron.services.sharpspring = {
 tarteaucitron.services.sharpspring = {
     "key": "sharpspring",
     "key": "sharpspring",
@@ -155,7 +220,7 @@ tarteaucitron.services.xandrsegment = {
         tarteaucitron.fallback(['xandrsegment-canvas'], function (x) {
         tarteaucitron.fallback(['xandrsegment-canvas'], function (x) {
             var uniqId = '_' + Math.random().toString(36).substr(2, 9);
             var uniqId = '_' + Math.random().toString(36).substr(2, 9);
             uniqIds.push(uniqId);
             uniqIds.push(uniqId);
-            return '<div id="' + uniqId + '" xandrsegmentAdd="' + (x.getAttribute('xandrsegmentAdd') ?? '') + '" xandrsegmentAddCode="' + (x.getAttribute('xandrsegmentAddCode') ?? '')  + '" xandrsegmentRemove="' + (x.getAttribute('xandrsegmentRemove') ?? '') + '" xandrsegmentRemoveCode="' + (x.getAttribute('xandrsegmentRemoveCode') ?? '') + '" xandrsegmentMember="' + (x.getAttribute('xandrsegmentMember') ?? '') + '" xandrsegmentRedir="' + (x.getAttribute('xandrsegmentRedir') ?? '') + '" xandrsegmentValue="' + (x.getAttribute('xandrsegmentValue') ?? '') + '" xandrsegmentOther="' + (x.getAttribute('xandrsegmentOther') ?? '') + '"></div>';
+            return '<div id="' + uniqId + '" xandrsegmentAdd="' + x.getAttribute('xandrsegmentAdd') + '" xandrsegmentAddCode="' + x.getAttribute('xandrsegmentAddCode')  + '" xandrsegmentRemove="' + x.getAttribute('xandrsegmentRemove') + '" xandrsegmentRemoveCode="' + x.getAttribute('xandrsegmentRemoveCode') + '" xandrsegmentMember="' + x.getAttribute('xandrsegmentMember') + '" xandrsegmentRedir="' + x.getAttribute('xandrsegmentRedir') + '" xandrsegmentValue="' + x.getAttribute('xandrsegmentValue') + '" xandrsegmentOther="' + x.getAttribute('xandrsegmentOther') + '"></div>';
         });
         });
 
 
         for (i = 0; i < uniqIds.length; i += 1) {
         for (i = 0; i < uniqIds.length; i += 1) {
@@ -197,7 +262,7 @@ tarteaucitron.services.xandrconversion = {
         tarteaucitron.fallback(['xandrconversion-canvas'], function (x) {
         tarteaucitron.fallback(['xandrconversion-canvas'], function (x) {
             var uniqId = '_' + Math.random().toString(36).substr(2, 9);
             var uniqId = '_' + Math.random().toString(36).substr(2, 9);
             uniqIds.push(uniqId);
             uniqIds.push(uniqId);
-            return '<div id="' + uniqId + '" xandrconversionId="' + (x.getAttribute('xandrconversionId') ?? '') + '" xandrconversionSeg="' + (x.getAttribute('xandrconversionSeg') ?? '') + '" xandrconversionOrderId="' + (x.getAttribute('xandrconversionOrderId') ?? '') + '" xandrconversionValue="' + (x.getAttribute('xandrconversionValue') ?? '') + '" xandrconversionRedir="' + (x.getAttribute('xandrconversionRedir') ?? '') + '" xandrconversionOther="' + (x.getAttribute('xandrconversionOther') ?? '') + '"></div>';
+            return '<div id="' + uniqId + '" xandrconversionId="' + x.getAttribute('xandrconversionId') + '" xandrconversionSeg="' + x.getAttribute('xandrconversionSeg') + '" xandrconversionOrderId="' + x.getAttribute('xandrconversionOrderId') + '" xandrconversionValue="' + x.getAttribute('xandrconversionValue') + '" xandrconversionRedir="' + x.getAttribute('xandrconversionRedir') + '" xandrconversionOther="' + x.getAttribute('xandrconversionOther') + '"></div>';
         });
         });
 
 
         for (i = 0; i < uniqIds.length; i += 1) {
         for (i = 0; i < uniqIds.length; i += 1) {
@@ -233,9 +298,10 @@ tarteaucitron.services.helloasso = {
             var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'HelloAsso iframe'),
             var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'HelloAsso iframe'),
                 width = x.getAttribute("width"),
                 width = x.getAttribute("width"),
                 height = x.getAttribute("height"),
                 height = x.getAttribute("height"),
-                url = x.getAttribute("data-url");
+                url = x.getAttribute("data-url"),
+                allowfullscreen = x.getAttribute("allowfullscreen");
 
 
-            return '<iframe title="' + frame_title + '" id="haWidget" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="auto" allowtransparency allowfullscreen></iframe>';
+            return '<iframe title="' + frame_title + '" id="haWidget" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="auto" allowtransparency ' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
         });
         });
     },
     },
     "fallback": function () {
     "fallback": function () {
@@ -263,9 +329,10 @@ tarteaucitron.services.podcloud = {
             var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'podCloud iframe'),
             var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'podCloud iframe'),
                 width = x.getAttribute("width"),
                 width = x.getAttribute("width"),
                 height = x.getAttribute("height"),
                 height = x.getAttribute("height"),
-                url = x.getAttribute("data-url");
+                url = x.getAttribute("data-url"),
+                allowfullscreen= x.getAttribute("allowfullscreen");
 
 
-            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="auto" allowtransparency allowfullscreen></iframe>';
+            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="auto" allowtransparency ' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
         });
         });
     },
     },
     "fallback": function () {
     "fallback": function () {
@@ -294,9 +361,10 @@ tarteaucitron.services.facebookpost = {
                 width = x.getAttribute("width"),
                 width = x.getAttribute("width"),
                 height = x.getAttribute("height"),
                 height = x.getAttribute("height"),
                 url = x.getAttribute("data-url"),
                 url = x.getAttribute("data-url"),
-                appId = x.getAttribute("data-appid");
+                appId = x.getAttribute("data-appid"),
+                allowfullscreen = x.getAttribute("allowfullscreen");
 
 
-            return '<iframe title="' + frame_title + '" src="https://www.facebook.com/plugins/post.php?href=' + encodeURIComponent(url) + '&amp;width=' + width + '&amp;show_text=false&amp;appId=' + appId + '&amp;height=' + height + '" width="' + width + '" height="' + height + '" scrolling="auto" allowtransparency allowfullscreen></iframe>';
+            return '<iframe title="' + frame_title + '" src="https://www.facebook.com/plugins/post.php?href=' + encodeURIComponent(url) + '&amp;width=' + width + '&amp;show_text=false&amp;appId=' + appId + '&amp;height=' + height + '" width="' + width + '" height="' + height + '" scrolling="auto" allowtransparency ' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
         });
         });
     },
     },
     "fallback": function () {
     "fallback": function () {
@@ -729,9 +797,10 @@ tarteaucitron.services.calameo = {
                 id = x.getAttribute("data-id"),
                 id = x.getAttribute("data-id"),
                 width = x.getAttribute("width"),
                 width = x.getAttribute("width"),
                 height = x.getAttribute("height"),
                 height = x.getAttribute("height"),
-                url = '//v.calameo.com/?bkcode=' + id;
+                url = '//v.calameo.com/?bkcode=' + id,
+                allowfullscreen = x.getAttribute("allowfullscreen");
 
 
-            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="no" allowtransparency allowfullscreen></iframe>';
+            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="no" allowtransparency ' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
         });
         });
     },
     },
     "fallback": function () {
     "fallback": function () {
@@ -934,13 +1003,14 @@ tarteaucitron.services.artetv = {
                 video_json = x.getAttribute("json"),
                 video_json = x.getAttribute("json"),
                 video_width = x.getAttribute("width"),
                 video_width = x.getAttribute("width"),
                 video_height = x.getAttribute("height"),
                 video_height = x.getAttribute("height"),
-                video_frame;
+                video_frame,
+                video_allowfullscreen = x.getAttribute("allowfullscreen");
 
 
             if (video_json === undefined) {
             if (video_json === undefined) {
                 return "";
                 return "";
             }
             }
 
 
-            video_frame = '<iframe title="' + frame_title + '" style="transition-duration: 0; transition-property: no; margin: 0 auto; position: relative; display: block; background-color: #000000;" src="https://www.arte.tv/player/v5/index.php?json_url=' + video_json + '" width="' + video_width + '" height="' + video_height + '" scrolling="no" allowfullscreen="allowfullscreen"></iframe>';
+            video_frame = '<iframe title="' + frame_title + '" style="transition-duration: 0; transition-property: no; margin: 0 auto; position: relative; display: block; background-color: #000000;" src="https://www.arte.tv/player/v5/index.php?json_url=' + video_json + '" width="' + video_width + '" height="' + video_height + '" scrolling="no" ' + (video_allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
             return video_frame;
             return video_frame;
         });
         });
     },
     },
@@ -974,6 +1044,7 @@ tarteaucitron.services.dailymotion = {
                 frame_height = 'height=',
                 frame_height = 'height=',
                 video_frame,
                 video_frame,
                 embed_type = x.getAttribute("embedType"),
                 embed_type = x.getAttribute("embedType"),
+                allowfullscreen = x.getAttribute("allowfullscreen"),
                 params = 'info=' + x.getAttribute("showinfo") + '&autoPlay=' + x.getAttribute("autoplay");
                 params = 'info=' + x.getAttribute("showinfo") + '&autoPlay=' + x.getAttribute("autoplay");
 
 
             if (video_id === undefined) {
             if (video_id === undefined) {
@@ -992,7 +1063,7 @@ tarteaucitron.services.dailymotion = {
             if (embed_type === undefined || !['video', 'playlist'].includes(embed_type) ) {
             if (embed_type === undefined || !['video', 'playlist'].includes(embed_type) ) {
                 embed_type = "video";
                 embed_type = "video";
             }
             }
-            video_frame = '<iframe title="' + frame_title + '" src="//www.dailymotion.com/embed/' + embed_type + '/' + video_id + '?' + params + '" ' + frame_width + frame_height + ' allowfullscreen></iframe>';
+            video_frame = '<iframe title="' + frame_title + '" src="//www.dailymotion.com/embed/' + embed_type + '/' + video_id + '?' + params + '" ' + frame_width + frame_height + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
             return video_frame;
             return video_frame;
         });
         });
     },
     },
@@ -1120,6 +1191,7 @@ tarteaucitron.services.deezer = {
                 embed_type = x.getAttribute("embedType"),
                 embed_type = x.getAttribute("embedType"),
                 radius = x.getAttribute("radius"),
                 radius = x.getAttribute("radius"),
                 tracklist = x.getAttribute("tracklist"),
                 tracklist = x.getAttribute("tracklist"),
+                allowfullscreen = x.getAttribute("allowfullscreen"),
                 params;
                 params;
 
 
             if (deezer_id === undefined) {
             if (deezer_id === undefined) {
@@ -1148,7 +1220,7 @@ tarteaucitron.services.deezer = {
                 tracklist = "true";
                 tracklist = "true";
             }
             }
             params = 'tracklist=' + tracklist + '&radius=' + radius;
             params = 'tracklist=' + tracklist + '&radius=' + radius;
-            deezer_frame = '<iframe title="' + frame_title + '" src="//widget.deezer.com/widget/' + embed_theme + '/' + embed_type + '/' + deezer_id + '?' + params + '" ' + frame_width + frame_height + ' allowfullscreen></iframe>';
+            deezer_frame = '<iframe title="' + frame_title + '" src="//widget.deezer.com/widget/' + embed_theme + '/' + embed_type + '/' + deezer_id + '?' + params + '" ' + frame_width + frame_height + ' ' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
             return deezer_frame;
             return deezer_frame;
         });
         });
     },
     },
@@ -1261,7 +1333,7 @@ tarteaucitron.services.facebook = {
     "name": "Facebook",
     "name": "Facebook",
     "uri": "https://www.facebook.com/policy.php",
     "uri": "https://www.facebook.com/policy.php",
     "needConsent": true,
     "needConsent": true,
-    "cookies": [],
+    "cookies": ['xs', 'sb', 'fr', 'datr', 'dpr', 'c_user'],
     "js": function () {
     "js": function () {
         "use strict";
         "use strict";
         tarteaucitron.fallback(['fb-post', 'fb-follow', 'fb-activity', 'fb-send', 'fb-share-button', 'fb-like', 'fb-video'], '');
         tarteaucitron.fallback(['fb-post', 'fb-follow', 'fb-activity', 'fb-send', 'fb-share-button', 'fb-like', 'fb-video'], '');
@@ -1754,14 +1826,7 @@ tarteaucitron.services.gtag = {
                  * https://support.google.com/analytics/answer/7476333?hl=en
                  * https://support.google.com/analytics/answer/7476333?hl=en
                  * https://developers.google.com/analytics/devguides/collection/gtagjs/cross-domain
                  * https://developers.google.com/analytics/devguides/collection/gtagjs/cross-domain
                  */
                  */
-                gtag(
-                    'config',
-                    tarteaucitron.user.gtagUa,
-                    { 'anonymize_ip': true },
-                    {linker: {
-                        domains: tarteaucitron.user.gtagCrossdomain,
-                    }},
-                );
+                gtag('config',tarteaucitron.user.gtagUa,{ 'anonymize_ip': true },{linker: {domains: tarteaucitron.user.gtagCrossdomain,}});
             } else {
             } else {
                 gtag('config', tarteaucitron.user.gtagUa, { 'anonymize_ip': true });
                 gtag('config', tarteaucitron.user.gtagUa, { 'anonymize_ip': true });
             }
             }
@@ -2506,7 +2571,7 @@ tarteaucitron.services.soundcloud = {
     type: 'video',
     type: 'video',
     name: 'SoundCloud',
     name: 'SoundCloud',
     needConsent: true,
     needConsent: true,
-    cookies: ['sc_anonymous_id'],
+    cookies: ['sc_anonymous_id', 'sclocale'],
     js: function () {
     js: function () {
         "use strict";
         "use strict";
         tarteaucitron.fallback(['soundcloud_player'], function (x) {
         tarteaucitron.fallback(['soundcloud_player'], function (x) {
@@ -2891,6 +2956,7 @@ tarteaucitron.services.vimeo = {
                 frame_height = 'height=',
                 frame_height = 'height=',
 
 
                 video_id = x.getAttribute("data-videoID") || x.getAttribute("videoID"),
                 video_id = x.getAttribute("data-videoID") || x.getAttribute("videoID"),
+                video_allowfullscreen = x.getAttribute("data-allowfullscreen"),
                 video_autopause = x.getAttribute("data-autopause") || '',
                 video_autopause = x.getAttribute("data-autopause") || '',
                 video_autoplay = x.getAttribute("data-autoplay") || x.getAttribute("autoplay") || '',
                 video_autoplay = x.getAttribute("data-autoplay") || x.getAttribute("autoplay") || '',
                 video_background = x.getAttribute("data-background") || '',
                 video_background = x.getAttribute("data-background") || '',
@@ -3032,7 +3098,7 @@ tarteaucitron.services.vimeo = {
                 video_qs = "";
                 video_qs = "";
             }
             }
 
 
-            video_frame = '<iframe title="' + frame_title + '" src="//player.vimeo.com/video/' + video_id + video_qs + '" ' + frame_width + frame_height + ' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
+            video_frame = '<iframe title="' + frame_title + '" src="//player.vimeo.com/video/' + video_id + video_qs + '" ' + frame_width + frame_height  + (video_allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
 
 
             return video_frame;
             return video_frame;
         });
         });
@@ -3087,7 +3153,7 @@ tarteaucitron.services.verizondottag = {
         });
         });
 
 
         tarteaucitron.addScript('https://s.yimg.com/wi/ytc.js', '', function () {
         tarteaucitron.addScript('https://s.yimg.com/wi/ytc.js', '', function () {
-            const items = window.dotq;
+            //const items = window.dotq;
             window.dotq = [];
             window.dotq = [];
             window.dotq.push = function (item) {
             window.dotq.push = function (item) {
                 YAHOO.ywa.I13N.fireBeacon([item])
                 YAHOO.ywa.I13N.fireBeacon([item])
@@ -3193,6 +3259,10 @@ tarteaucitron.services.atinternet = {
             return;
             return;
         }
         }
 
 
+        if (tarteaucitron.user.atinternetAlreadyLoaded !== undefined) {
+            return;
+        }
+
         tarteaucitron.addScript(tarteaucitron.user.atLibUrl, '', function() {
         tarteaucitron.addScript(tarteaucitron.user.atLibUrl, '', function() {
 
 
             window.tag = new ATInternet.Tracker.Tag();
             window.tag = new ATInternet.Tracker.Tag();
@@ -3216,6 +3286,8 @@ tarteaucitron.services.atinternet = {
             return;
             return;
         }
         }
 
 
+        tarteaucitron.user.atinternetAlreadyLoaded = true;
+
         tarteaucitron.addScript(tarteaucitron.user.atLibUrl, '', function() {
         tarteaucitron.addScript(tarteaucitron.user.atLibUrl, '', function() {
 
 
             window.tag = new ATInternet.Tracker.Tag();
             window.tag = new ATInternet.Tracker.Tag();
@@ -3279,12 +3351,15 @@ tarteaucitron.services.youtube = {
         tarteaucitron.fallback(['youtube_player'], function (x) {
         tarteaucitron.fallback(['youtube_player'], function (x) {
             var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Youtube iframe'),
             var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Youtube iframe'),
                 video_id = x.getAttribute("videoID"),
                 video_id = x.getAttribute("videoID"),
+                srcdoc = x.getAttribute("srcdoc"),
+                loading = x.getAttribute("loading"),
                 video_width = x.getAttribute("width"),
                 video_width = x.getAttribute("width"),
                 frame_width = 'width=',
                 frame_width = 'width=',
                 video_height = x.getAttribute("height"),
                 video_height = x.getAttribute("height"),
                 frame_height = 'height=',
                 frame_height = 'height=',
                 video_frame,
                 video_frame,
-                attrs = ["theme", "rel", "controls", "showinfo", "autoplay", "mute", "start"],
+                allowfullscreen = x.getAttribute("allowfullscreen"),
+                attrs = ["theme", "rel", "controls", "showinfo", "autoplay", "mute", "start", "loop"],
                 params = attrs.filter(function (a) {
                 params = attrs.filter(function (a) {
                   return x.getAttribute(a) !== null;
                   return x.getAttribute(a) !== null;
                 }).map(function (a) {
                 }).map(function (a) {
@@ -3304,7 +3379,20 @@ tarteaucitron.services.youtube = {
             } else {
             } else {
                 frame_height += '"" ';
                 frame_height += '"" ';
             }
             }
-            video_frame = '<iframe title="' + frame_title + '" type="text/html" ' + frame_width + frame_height + ' src="//www.youtube-nocookie.com/embed/' + video_id + '?' + params + '" allowfullscreen></iframe>';
+
+            if (srcdoc !== undefined && srcdoc !== null && srcdoc !== "") {
+                srcdoc =  'srcdoc="' + srcdoc + '" ';
+            } else {
+                srcdoc = '';
+            }
+
+            if (loading !== undefined && loading !== null && loading !== "") {
+                loading =  'loading ';
+            } else {
+                loading = '';
+            }
+
+            video_frame = '<iframe title="' + frame_title + '" type="text/html" ' + frame_width + frame_height + ' src="//www.youtube-nocookie.com/embed/' + video_id + '?' + params + '"' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + ' ' + srcdoc + ' ' + loading + '></iframe>';
             return video_frame;
             return video_frame;
         });
         });
     },
     },
@@ -3337,6 +3425,7 @@ tarteaucitron.services.youtubeplaylist = {
                 video_height = x.getAttribute("height"),
                 video_height = x.getAttribute("height"),
                 frame_height = 'height=',
                 frame_height = 'height=',
                 video_frame,
                 video_frame,
+                allowfullscreen = x.getAttribute("allowfullscreen"),
                 params = 'theme=' + x.getAttribute("theme") + '&rel=' + x.getAttribute("rel") + '&controls=' + x.getAttribute("controls") + '&showinfo=' + x.getAttribute("showinfo") + '&autoplay=' + x.getAttribute("autoplay") + '&mute=' + x.getAttribute("mute");
                 params = 'theme=' + x.getAttribute("theme") + '&rel=' + x.getAttribute("rel") + '&controls=' + x.getAttribute("controls") + '&showinfo=' + x.getAttribute("showinfo") + '&autoplay=' + x.getAttribute("autoplay") + '&mute=' + x.getAttribute("mute");
 
 
             if (playlist_id === undefined) {
             if (playlist_id === undefined) {
@@ -3352,7 +3441,7 @@ tarteaucitron.services.youtubeplaylist = {
             } else {
             } else {
                 frame_height += '"" ';
                 frame_height += '"" ';
             }
             }
-            video_frame = '<iframe title="' + frame_title + '" type="text/html" ' + frame_width + frame_height + ' src="//www.youtube-nocookie.com/embed/videoseries?list=' + playlist_id + '&' + params + '" allowfullscreen></iframe>';
+            video_frame = '<iframe title="' + frame_title + '" type="text/html" ' + frame_width + frame_height + ' src="//www.youtube-nocookie.com/embed/videoseries?list=' + playlist_id + '&' + params + '"' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
             return video_frame;
             return video_frame;
         });
         });
     },
     },
@@ -3815,6 +3904,7 @@ tarteaucitron.services.matterport = {
         matterport_height = x.getAttribute("height"),
         matterport_height = x.getAttribute("height"),
         frame_height = 'height=',
         frame_height = 'height=',
         matterport_parameters = x.getAttribute("parameters"),
         matterport_parameters = x.getAttribute("parameters"),
+        matterport_allowfullscreen = x.getAttribute('allowfullscreen'),
         matterport_frame;
         matterport_frame;
 
 
       if (matterport_id === undefined) {
       if (matterport_id === undefined) {
@@ -3834,7 +3924,7 @@ tarteaucitron.services.matterport = {
         return "";
         return "";
       }
       }
 
 
-      matterport_frame = '<iframe title="' + frame_title + '" type="text/html" ' + frame_width + frame_height + ' src="https://my.matterport.com/show/?m=' + matterport_id + '&utm_source=hit-content' + matterport_parameters + '" allowfullscreen="allowfullscreen"></iframe>';
+      matterport_frame = '<iframe title="' + frame_title + '" type="text/html" ' + frame_width + frame_height + ' src="https://my.matterport.com/show/?m=' + matterport_id + '&utm_source=hit-content' + matterport_parameters + '"' + (matterport_allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
       return matterport_frame;
       return matterport_frame;
     });
     });
   },
   },
@@ -3930,6 +4020,10 @@ tarteaucitron.services.getquanty = {
             return;
             return;
         }
         }
 
 
+        if (tarteaucitron.user.getquantyAlreadyLoaded !== undefined) {
+            return;
+        }
+
         tarteaucitron.addScript('https://get.smart-data-systems.com/gq?site_id=' + tarteaucitron.user.getguanty + '&consent=1');
         tarteaucitron.addScript('https://get.smart-data-systems.com/gq?site_id=' + tarteaucitron.user.getguanty + '&consent=1');
     },
     },
     "fallback": function () {
     "fallback": function () {
@@ -3938,6 +4032,8 @@ tarteaucitron.services.getquanty = {
             return;
             return;
         }
         }
 
 
+        tarteaucitron.user.getquantyAlreadyLoaded = true;
+
         tarteaucitron.addScript('https://get.smart-data-systems.com/gq?site_id=' + tarteaucitron.user.getguanty + '&notrack=1');
         tarteaucitron.addScript('https://get.smart-data-systems.com/gq?site_id=' + tarteaucitron.user.getguanty + '&notrack=1');
     }
     }
 };
 };
@@ -3967,7 +4063,7 @@ tarteaucitron.services.youtubeapi = {
     "key": "youtubeapi",
     "key": "youtubeapi",
     "type": "video",
     "type": "video",
     "name": "Youtube (Js API)",
     "name": "Youtube (Js API)",
-    "uri": "https://policies.google.com/privacy/",
+    "uri": "https://policies.google.com/privacy",
     "needConsent": true,
     "needConsent": true,
     "cookies": [],
     "cookies": [],
     "js": function () {
     "js": function () {