ulvis.paste.net

Paste Search Dynamic
Recent pastes
disable tracking
  1. /**
  2.  * Create html with user option to disable analytics tracking
  3.  */
  4.  
  5. (function () {
  6.         var trackingId = null;
  7.         var cookiesModal = document.createElement("div");
  8.         cookiesModal.classList.add("cookies-modal");
  9.         cookiesModal.setAttribute("id", "do-not-track-options");
  10.         cookiesModal.innerHTML = "\n\t<div  style=\"max-width:1000px;margin:0 auto;padding: 0 20px\">\n\t\t<div><h3 style=\"font-size:20px; margin-bottom:10px;\">ABOUT COOKIE POLICY</h3></div>\n\t\t<div>\n\t\t\t<div style=\"line-height:20px;\" id=\"cookie-body\">\n\t\t\t\t<p class=\"text\" style=\"margin:0;\">Europass wesbites use cookies, which help us deliver our services.For more details, see our <a href=\"https://europass.cedefop.europa.eu/legalnotice#cookie-policy\" target=\"_blank\" style=\"color: #4cb0ff;font-weight:bold; \">Cookie policy</a></p>\n\t\t\t\t<p style=\"margin-top:0; margin-bottom: 15px;\">You can enable and disable cookies by selecting the options below.</p>\n\t\t\t</div>\t\t\t\n\t\t\t<ul style=\"list-style-type:none;padding:0;display:flex;margin:0; \">\n\t\t\t\t<li><input id=\"mandatory\" style=\"margin:0 2px 0 0;border: 0; vertical-align:middle;\" type=\"checkbox\" name=\"mandatory\" value=\"mandatory\" checked disabled> Mandatory cookies<span style=\"margin-left:10px;\">|</span></li>\n\t\t\t\t<li style=\"padding-left:10px;\"><input id=\"analytics\" style=\"margin:0 2px; vertical-align:middle;\" id=\"analytics\" type=\"checkbox\" name=\"analytics\" value=\"analytics\" " + (navigator.doNotTrack === "1" ? "" : "checked") + "> Analytics</li>\n\t\t\t</ul>\n\t\t</div>\n         <div style=\"margin-top:10px\">\n\t\t\t<button style=\"border-radius: 7px;\n\t\t\t\tbackground-color: #2979b8;\n\t\t\t\tcolor: white;\n\t\t\t\ttransition-property: none;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tposition: relative;\n\t\t\t\tmargin: 5px 0 0;\n\t\t\t\tfont-size: 15px;\n\t\t\t\tline-height: 1em;\n\t\t\t\tfont-weight: 700;\n\t\t\t\tpadding: 13px 13px;\n\t\t\t\twidth: 120px;\n\t\t\t\ttext-align: center;\n\t\t\t\tborder: none;\n\t\t\t\tcursor: pointer;\" id=\"cookies-agreed\">OK, I Agree\n\t\t\t</button>\n\t\t</div>\n\t</div>\n\t";
  11.         cookiesModal.style.fontFamily = "arial";
  12.         cookiesModal.style.fontSize = "15px";
  13.         cookiesModal.style.padding = "20px 0";
  14.         cookiesModal.style.margin = "0 auto";
  15.         cookiesModal.style.borderRadius = "3px";
  16.         cookiesModal.style.background = "#464444";
  17.         cookiesModal.style.color = "white";
  18.         cookiesModal.style.position = "fixed";
  19.         cookiesModal.style.bottom = 0;
  20.         cookiesModal.style.left = 0;
  21.         cookiesModal.style.right = 0;
  22.         cookiesModal.style.zIndex = 10000;
  23.  
  24.         if (getCookie("do-not-track") === "true") {
  25.                 var gaTimer = setInterval(function () {
  26.                         if (typeof ga !== "undefined") {
  27.                                 ga(function (tracker) {
  28.                                         var key = "ga-disable-" + tracker.get("trackingId");
  29.                                         window[key] = true;
  30.                                         clearInterval(gaTimer);
  31.                                 });
  32.                         }
  33.                 }, 100);
  34.         } else if (getCookie("do-not-track").length === 0) {
  35.  
  36.                 document.body.addEventListener("load-do-not-track", function (event) {
  37.                         trackingId = event.detail.trackingId;
  38.                         fetchTexts(event.detail.locale);
  39.  
  40.                         // select the target node
  41.                         var target = document.body;
  42.                         // create an observer instance
  43.                         var observer = new MutationObserver(function (mutations) {
  44.                                 lastMutation = 0;
  45.                                 mutations.forEach(function (mutation) {
  46.                                         lastMutation = new Date();
  47.                                 });
  48.                         });
  49.                         var mutationTime = setInterval(function () {
  50.                                 if (Math.floor(new Date() - lastMutation) > 1000) {
  51.                                         clearInterval(mutationTime);
  52.                                         document.body.appendChild(cookiesModal);
  53.                                 }
  54.                         }, 1000);
  55.                         // configuration of the observer:
  56.                         var config = {childList: true, attributes:true};
  57.                         // pass in the target node, as well as the observer options
  58.                         observer.observe(target, config);
  59.  
  60.                         var agreedCookies = cookiesModal.querySelector("button");
  61.                         agreedCookies.addEventListener("click", function (event) {
  62.                                 var analytics = cookiesModal.querySelector("#analytics").checked;
  63.                                 if (!analytics) {
  64.                                         setCookie("do-not-track", true, 60);
  65.                                         var key = "ga-disable-" + trackingId;
  66.                                         window[key] = true;
  67.                                         deleteCookies();
  68.                                         cookiesModal.style.display = "none";
  69.                                 } else {
  70.                                         setCookie("do-not-track", false, 60);
  71.                                         cookiesModal.style.display = "none";
  72.                                 }
  73.                         });
  74.                 });
  75.         }
  76.  
  77.         function getCookie(cname) {
  78.                 var name = cname + "=";
  79.                 var decodedCookie = decodeURIComponent(document.cookie);
  80.                 var ca = decodedCookie.split(";");
  81.                 for (var i = 0; i < ca.length; i++) {
  82.                         var c = ca[i];
  83.                         while (c.charAt(0) === " ") {
  84.                                 c = c.substring(1);
  85.                         }
  86.                         if (c.indexOf(name) === 0) {
  87.                                 return c.substring(name.length, c.length);
  88.                         }
  89.                 }
  90.                 return "";
  91.         }
  92.  
  93.         function setCookie(cname, cvalue, exdays) {
  94.                 var d = new Date();
  95.                 d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
  96.                 var expires = "expires=" + d.toUTCString();
  97.                 document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
  98.         }
  99.  
  100.         function deleteCookies() {
  101.                 document.cookie = '_ga=; path=/; domain=' + window.location.hostname + '; expires=' + new Date(0).toUTCString();
  102.                 document.cookie = '_gat=; path=/; domain=' + window.location.hostname + '; expires=' + new Date(0).toUTCString();
  103.                 document.cookie = '_gid=; path=/; domain=' + window.location.hostname + '; expires=' + new Date(0).toUTCString();
  104.         }
  105.  
  106.         function fetchTexts(locale) {
  107.                 require(
  108.                         ['i18n!localization/nls/Notification/'+locale],
  109.                         function (Notification) {
  110.                                 if (Notification["cookie.consent.notification.title"]) {                                       
  111.                                         cookiesModal.querySelector("h3").innerHTML = Notification["cookie.consent.notification.title"];
  112.                                 }
  113.                                 if (Notification["cookie.consent.notification.message.body"]) {
  114.                                         cookiesModal.querySelector("#cookie-body").innerHTML = Notification["cookie.consent.notification.message.body"];
  115.                                 }
  116.                                 if (Notification["cookie.consent.notification.message.options.mandatory"]) {
  117.                                         cookiesModal.querySelector("#mandatory").innerHTML = Notification["cookie.consent.notification.message.options.mandatory"];
  118.                                 }
  119.                                 if (Notification["cookie.consent.notification.message.options.analytics"]) {
  120.                                         cookiesModal.querySelector("#analytics").innerHTML = Notification["cookie.consent.notification.message.options.analytics"];
  121.                                 }
  122.                                 if (Notification["cookie.consent.notification.message.agree"]) {
  123.                                         cookiesModal.querySelector("button").innerHTML = Notification["cookie.consent.notification.message.agree"];
  124.                                 }
  125.                         });
  126.         }
  127. })(window);
  128.  
  129. (function () {
  130.  
  131.   if ( typeof window.CustomEvent === "function" ) return false;
  132.  
  133.   function CustomEvent ( event, params ) {
  134.     params = params || { bubbles: false, cancelable: false, detail: undefined };
  135.     var evt = document.createEvent( 'CustomEvent' );
  136.     evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
  137.     return evt;
  138.    }
  139.  
  140.   CustomEvent.prototype = window.Event.prototype;
  141.  
  142.   window.CustomEvent = CustomEvent;
  143. })();
Parsed in 0.046 seconds