https://www.ewv-kontrollsysteme.de/wp-content/themes/custom-ewv/cookieconsent/cookie_script.js?ver=1
1// Die folgenden Variablen sind je nach Kunde anzupassen: 2 3/* Die ersten drei Parameter der folgenden Arrays sind alle gleich 4 [0] Name des Dienstes. 5 [1] Boolean, ob der Dienst verwendet wird 6 [2] Startwert des Dienstes 'â' | '-' wird in Localstorage gespeichert 7 und ist bis auf techn. notwendige eigentlich immer '-' 8 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 9 Drittanbietercookies 10 [3] Die URL der iframes, die erstmal verhindert werden sollen 11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 12 Trackingcookies 13 [3] die ID für den zu verwendenden Dienst 14 [4] die URL für das Tracking (Matomo) 15*/ 16 17//Name,aktiv,default in localstorage,iframe-url 18var drittanbietercookies = [ 19 ['facebook', false, '-', 'facebook.com'], 20 ['gmaps', false, '-', 'google.com/maps'], 21 ['pinterest', false, '-', 'pinterest.com'], 22 ['vimeo', false, '-', 'vimeo.com'], 23 ['youtube', false, '-', 'youtube-nocookie.com'] 24]; 25 26// Name,aktiv,default in localstorage,piwikid/gtag-manager-id/pixelid,piwikurl 27var trackingcookies = [ 28 ['matomo', false, '-','',''], 29 ['googleanalytics', false, '-', ''], 30 ['gtag',false,'-',''], 31 ['metapixel', false, '-', ''] 32]; 33 34//Name,aktiv,default in localstorage 35var einstellungen = [ 36 ['kontrast', true, '-'] 37]; 38 39 40//Link zum Impressum 41var impressumlink = "/impressum"; 42//Link zum Datenschutz 43var datenschutzlink = "/datenschutz"; 44//Link zur Barrierefreiheitserklärung 45var barrierefreiheitserklink = "/barrierefreiheitserklaerung"; 46 47 48/* ********************************************* 49 * **** Ab hier ist nichts mehr anzupassen **** 50 * ********************************************* 51*/ 52/* enthält das HTML Template für die coookiebar */ 53var cookiebar; 54var cookiebarButton = false; 55var policyModal = false; 56var cookiebarModal = false; 57 58var _paq = _paq || []; // Matomo Config-Array 59 60var templatepath = ""; 61var pathArray = new URL(document.currentScript.src).pathname.split('/'); 62for (i = 0; i < (pathArray.length - 1); i++) { 63 if (pathArray[i] == '') 64 continue; 65 templatepath += "/"; 66 templatepath += pathArray[i]; 67} 68/* Das High Contrast CSS file*/ 69let contrast = document.createElement("link"); 70 contrast.type = "text/css"; 71 contrast.rel = "stylesheet"; 72 contrast.id ="high_contrast"; 73 contrast.href = templatepath + "/kontrast.css"; 74 75addHeadCss(templatepath + '/cookie_style.css'); 76 77/* bei DOMContentLoaded sind die iframes und deren Inhalte noch nicht geladen */ 78document.addEventListener('DOMContentLoaded', function () { 79 // Drittanbieter iFrames werden automatisch erkannt, in Divs mit den 80 // passenden Klassen gehüllt, src-Attribute geleert: 81 // passende Thumbnails werden per Ajax-Request geladen 82 showdialog=ccinit(); 83 84 let getcookiebar = fetchCookieBar(templatepath); 85 86 Promise.resolve(getcookiebar).then(function () { 87 let bodyElement = document.querySelector('body'); 88 bodyElement.insertAdjacentHTML("afterbegin", cookiebar); 89 console.log(cookiebar); 90 cookiebarButton = document.getElementById('cookiebarbutton'); 91 cookiebarModal = document.getElementById('cookiebar'); 92 if(cookiebarModal){ 93 cookiebarModal.addEventListener('show.bs.modal', event => { 94 cookiebaranpassen(); 95 if(cookiebarButton) 96 cookiebarButton.classList.add('d-none'); 97 }) 98 cookiebarModal.addEventListener('hide.bs.modal', event => { 99 if(cookiebarButton) 100 cookiebarButton.classList.remove('d-none'); 101 }) 102 } 103 policyModal = document.getElementById('cookiepolicy'); 104 if(policyModal){ 105 policyModal.addEventListener('show.bs.modal', event => { 106 if(cookiebarButton) 107 cookiebarButton.classList.add('d-none'); 108 cookiepolicyanpassen(); 109 }) 110 policyModal.addEventListener('hide.bs.modal', event => { 111 if(cookiebarButton) 112 cookiebarButton.classList.remove('d-none'); 113 }) 114 } 115 if (showdialog) { 116 bootstrap.Modal.getOrCreateInstance(cookiebarModal).show() 117 } 118 119 }); 120}); 121 122function ccinit() { 123 let showdialog=false;
124 drittanbietercookies.forEach(function (provider) { 125 if (provider[1]) { 126 temp = provider[2]; 127 provider[2] = localStorage.getItem(provider[0] + " consent"); 128 if( provider[2] == null ){ 129 showdialog = true; 130 provider[2] = temp; 131 } 132 if (provider[2] != 'â') { 133 let iframes = document.querySelectorAll("iframe[src*='" + provider[3] + "']"); 134 iframes.forEach(function (iframe) { 135 let div = document.createElement("div"); 136 div.classList.add(provider[0]); 137 138 iframe.parentNode.insertBefore(div, iframe); 139 div.appendChild(iframe); 140 141 iframe.removeAttribute("src"); 142 143 fetch(templatepath + "/cookie_thumbnails.html") 144 .then(function (response) { 145 if (!response.ok) { 146 throw new Error('Network response was not okay'); 147 } 148 return response.text(); 149 }) 150 .then(function (data) { 151 let tempDiv = document.createElement('div'); 152 tempDiv.innerHTML = data; 153 let thumbnail = tempDiv.querySelector("#" + provider[0] + "thumbnail"); 154 if (thumbnail) { 155 div.appendChild(thumbnail); 156 let img = thumbnail.querySelector("img"); 157 if (img) { 158 img.src = templatepath + "/img/" + provider[0] + ".png"; 159 } 160 } 161 }) 162 .catch(function (error) { 163 console.error('There has been a problem with your fetch function', error.message); 164 }); 165 }); 166 } 167 } 168 }); 169 trackingcookies.forEach(function (provider) { 170 if (provider[1]) { 171 temp = provider[2]; 172 provider[2] = localStorage.getItem(provider[0] + " consent"); 173 if( provider[2] == null ){ 174 showdialog = true; 175 provider[2] = temp; 176 } 177 if (provider[2] == 'â') { 178 switch (provider[0]) { 179 case 'matomo': 180 startMatomo(provider[3], provider[4]); 181 break; 182 case 'googleanalytics': 183 startGoogleAnalytics(provider[3]); 184 break; 185 case 'gtag': 186 startGoogleTagManager(provider[3]); 187 break; 188 case 'metapixel':
189 startMetapixel(provider[3]); 190 break; 191 } 192 } 193 } 194 }); 195 einstellungen.forEach(function (provider) { 196 if (provider[1]) { 197 temp = provider[2]; 198 provider[2] = localStorage.getItem(provider[0]); 199 if( provider[2] == null ){ 200 showdialog = true; 201 localStorage.setItem(provider[0], temp); 202 provider[2] = temp; 203 } 204 if(provider[2] == "â"){ 205 toggleKontrast(); 206 } 207 } 208 }); 209 return showdialog; 210} 211 212function toggleKontrast(){ 213 var buttontext; 214 if(document.getElementById('high_contrast') === null ){ 215 document.body.insertAdjacentElement('beforeend',contrast); 216 localStorage.setItem('kontrast', "â"); 217 buttontext = "Normaler Kontrast"; 218 } else { 219 contrast.remove(); 220 localStorage.setItem('kontrast', "-"); 221 buttontext = "Hoher Kontrast"; 222 } 223 let button = document.getElementById('b-kontrasttoggle') 224 if(button){ 225 button.textContent = buttontext; 226 } 227} 228 229// Lädt das CSS-Stylesheet in den Head 230function addHeadCss(fileName) { 231 var link = document.createElement("link"); 232 link.type = "text/css"; 233 link.rel = "stylesheet"; 234 link.href = fileName; 235 document.head.appendChild(link); 236} 237 238function startGoogleTagManager(googleTagManagerId) {
239 let commentstart = document.createComment("Google Tag Manager"); 240 let commentend = document.createComment("End Google Tag Manager"); 241 let script = document.createElement('script'); 242 script.type = 'text/javascript'; 243 script.text = "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','"+googleTagManagerId+"');"; 244 script.prepend(commentstart); 245 script.append(commentend); 246 document.head.appendChild(script); 247 // Jetzt noch den noscript Teil 248 let noscript = document.createElement('noscript'); 249 let iframe = document.createElement('iframe'); 250 iframe.setAttribute("src", "https://www.googletagmanager.com/ns.html?id="+googleTagManagerId+"\""); 251 iframe.setAttribute("width","0"); 252 iframe.setAttribute("height","0"); 253 iframe.setAttribute("style", "display:none;visibility:hidden"); 254 noscript.append(iframe); 255 noscript.prepend(commentstart.cloneNode()); 256 noscript.append(commentend.cloneNode()); 257 document.body.insertAdjacentElement('afterbegin', noscript); 258} 259 260function startGoogleAnalytics(googleAnalyticsId) {
261 let commentstart = document.createComment("Google Analytics"); 262 let commentend = document.createComment("End Google Analytics"); 263 let script = document.createElement('script'); 264 script.type = 'text/javascript'; 265 script.text = "window.ga=window.ga || function() { (ga.q=ga.q||[]).push(arguments) };ga.l=+new Date; ga('create',\"" + googleAnalyticsId + "\", 'auto'); ga('set', 'anonymizeIp', true); ga('send', 'pageview'); var gascript = document.createElement('script'); gascript.async = true; gascript.src = 'https://www.google-analytics.com/analytics.js'; document.getElementsByTagName('head')[0].appendChild(gascript, document.getElementsByTagName('head')[0]);"; 266 script.prepend(commentstart); 267 script.append(commentend); 268 document.head.appendChild(script); 269} 270 271function startMetapixel(metapixelId) { 272 let commentstart = document.createComment("Meta Pixel"); 273 let commentend = document.createComment("End Meta Pixel"); 274 let script = document.createElement('script'); 275 script.type = 'text/javascript'; 276 script.text = " !function (f, b, e, v, n, t, s) { if (f.fbq) return; n = f.fbq = function () { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments) }; if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; n.queue = []; t = b.createElement(e); t.async = !0; t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s) } (window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '" + metapixelId + "'); fbq('track', 'PageView');" 277 script.prepend(commentstart); 278 script.append(commentend); 279 document.head.appendChild(script); 280} 281 282function startMatomo(piwiksiteid, piwikurl) { 283 _paq.push(['rememberConsentGiven']); 284 _paq.push(['trackPageView']); 285 _paq.push(['enableLinkTracking']); 286 (function () { 287 var u = (("https:" == document.location.protocol) ? "https" : "http") + "://" + piwikurl; 288 _paq.push(['setTrackerUrl', u + 'js/']); 289 _paq.push(['setSiteId', piwiksiteid]); 290 var d = document, 291 g = d.createElement('script'), 292 s = d 293 .getElementsByTagName('script')[0]; 294 g.type = 'text/javascript'; 295 g.async = true; 296 g.defer = true; 297 g.src = u + 'js/'; 298 s.parentNode.insertBefore(g, s); 299 })(); 300} 301 302function cookiebaranpassen() { 303 document.querySelectorAll(".cb-intros").forEach(function (element) { 304 element.classList.add('d-none'); 305 }) 306 if (drittanbietercookies.some(provider => (provider[1])) || trackingcookies.some(provider => (provider[1]))) { 307 let element = document.getElementById('cb-intro1'); 308 if (element) { 309 element.classList.remove('d-none') 310 } 311 } 312 else { 313 document.getElementById('b-notwendig').classList.add('d-none'); 314 document.getElementById('b-akzeptieren').setAttribute('value', 'Ok'); 315 document.getElementById('cb-intro2').classList.remove('d-none'); 316 }
317 if(!einstellungen.some(provider => (provider[1]))){ 318 document.getElementById('div-barrierefreiheit').classList.add('d-none'); 319 } else{ 320 einstellungen.forEach(function (provider) { 321 if (provider[1]) { 322 switch(provider[0]){ 323 case 'kontrast': 324 const kontrastState = localStorage.getItem('kontrast'); 325 let button = document.getElementById('b-kontrasttoggle'); 326 if (button) { 327 if (kontrastState === "â") { 328 button.textContent = 'Normaler Kontrast'; 329 } else { 330 button.textContent = 'Hoher Kontrast'; 331 } 332 } 333 break; 334 } 335 } 336 }) 337 } 338 document.getElementById('impressum_cookie').href = impressumlink; 339 document.getElementById('datenschutz_cookie').href = datenschutzlink; 340 document.getElementById('barrierefreiheitserk_cookie').href = barrierefreiheitserklink; 341} 342 343function cookiepolicyanpassen() { 344 if (!drittanbietercookies.some(provider => (provider[1]))) { 345 document.getElementById('div-drittanbieter').remove(); 346 } else { 347 drittanbietercookies.forEach(function (provider) { 348 if (!provider[1]) { 349 let providers = 'li-' + provider[0]; 350 let elementToRemove = document.getElementById(providers); 351 if (elementToRemove) { 352 elementToRemove.parentNode.removeChild(elementToRemove); 353 } 354 } 355 }); 356 } 357 if (!trackingcookies.some(provider => (provider[1]))) { 358 document.getElementById('div-tracking').remove(); 359 } else { 360 trackingcookies.forEach(function (provider) { 361 if (!provider[1]) { 362 let tracking = 'div-' + provider[0]; 363 let elementToRemove = document.getElementById(tracking); 364 if (elementToRemove) { 365 elementToRemove.parentNode.removeChild(elementToRemove); 366 } 367 } 368 }); 369 } 370 checkboxes(); 371} 372 373function checkboxes() { 374 var myproperty = "checked"; 375 var result = null; 376 drittanbietercookies.forEach(function (provider) { 377 if (provider[1]) { 378 if (result == null) { 379 result = provider[2]; 380 } 381 if (provider[2] != result) { 382 myproperty = "indeterminate"; 383 } 384 385 let policyCheckbox = document.getElementById('cb-' + provider[0]); 386 if (policyCheckbox != null) { 387 if (provider[2] == "â") { 388 policyCheckbox.checked = true; 389 } 390 else { 391 policyCheckbox.checked = false; 392 } 393 } 394 } 395 }); 396 397 let cbDrittanbieter = document.getElementById('cb-drittanbieter'); 398 if (cbDrittanbieter) { 399 let value = (result === 'â' || myproperty === 'indeterminate') ? true : false; 400 cbDrittanbieter.checked = value; 401 } 402 403 myproperty = "checked"; 404 result = null; 405 trackingcookies.forEach(function (provider) { 406 if (provider[1]) { 407 if (result == null) { 408 result = provider[2]; 409 } 410 if (provider[2] != result) { 411 myproperty = "indeterminate"; 412 } 413 let checkbox = document.getElementById('cb-' + provider[0]); 414 if (checkbox != null) { 415 if (provider[2] == "â") { 416 checkbox.checked = true; 417 } 418 else { 419 checkbox.checked = false; 420 } 421 } 422 } 423 }); 424} 425 426function alleakzeptierenclick() { 427 val = "â"; 428 drittanbietercookies.forEach(function (provider) { 429 if (provider[1]) { 430 provider[2] = val; 431 localStorage.setItem(provider[0] + " consent", val); 432 } 433 }); 434 trackingcookies.forEach(function (provider) { 435 if (provider[1]) { 436 provider[2] = val; 437 localStorage.setItem(provider[0] + " consent", val); 438 } 439 }); 440 location.reload(); 441} 442 443function alleablehnenclick() { 444 val = "-";
445 drittanbietercookies.forEach(function (provider) { 446 if (provider[1]) { 447 provider[2] = val; 448 localStorage.setItem(provider[0] + " consent", val); 449 } 450 }); 451 trackingcookies.forEach(function (provider) { 452 if (provider[1]) { 453 provider[2] = val; 454 localStorage.setItem(provider[0] + " consent", val); 455 } 456 }); 457 location.reload(); 458} 459 460function checkboxclick(element) { 461 // Die Checkboxen heissen cb_xxx 462 var myelement = drittanbietercookies.filter(provider => (provider[0] == element.id.substr(3) && provider[1])); 463 var mytracking = trackingcookies.filter(provider => (provider[0] == element.id.substr(3) && provider[1])); 464 myelement = myelement.concat(mytracking); 465 myelement.forEach(function (provider) { 466 if (element.checked) { 467 provider[2] = "â"; 468 } else { 469 provider[2] = "-"; 470 } 471 }); 472} 473 474function anwendenclick() { 475 drittanbietercookies.forEach(function (provider) { 476 if (provider[1]) { 477 localStorage.setItem(provider[0] + " consent", provider[2]); 478 } 479 }); 480 trackingcookies.forEach(function (provider) { 481 if (provider[1]) { 482 localStorage.setItem(provider[0] + " consent", provider[2]); 483 } 484 }); 485 location.reload(); 486} 487 488function thumbnailclick() { 489 if(policyModal){ 490 bootstrap.Modal.getOrCreateInstance(policyModal).show() 491 } 492} 493 494function fetchCookieBar(templatepath) { 495 return fetch(templatepath + '/cookie_bar.html') 496 .then(function (response) { 497 if (!response.ok) { 498 throw new Error('Network response was not okay') 499 } 500 return response.text(); 501 }) 502 .then(function (data) { 503 cookiebar = data; 504 }) 505 .catch(function (error) { 506 console.error('There has been a problem with your fetch function', error.message) 507 }); 508}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.