PageSourceSearch

https://mrassistant.ai/assets/js/mr-consent.js

js mrassistant.ai collected 2026-10-05 12:16:41 UTC 2,897 bytes, 75 lines download raw bytes

1(function(){
2  if (window.__mrConsentInit) return; window.__mrConsentInit = true;
3  var KEY = 'mr_cookie_consent';
4
5  function getAccepted(){
6    try { return localStorage.getItem(KEY) === '1'; } catch (_) { return false; }
7  }
8  function setAccepted(){
9    try { localStorage.setItem(KEY, '1'); } catch (_) {}
10  }
11  function removeNode(el){ if(el && el.parentNode){ el.parentNode.removeChild(el); } }
12  function hideBanner(){
13    var banner = document.getElementById('cookies-policy');
14    removeNode(banner);
15  }
16  function blockBanner(){
17    if (document.getElementById('mr-consent-style')) return;
18    var st = document.createElement('style');
19    st.id = 'mr-consent-style';
20    st.textContent = '#cookies-policy{display:none!important;visibility:hidden!important}';
21    document.head.appendChild(st);
22  }
23  function observeReinjection(){
24    if (window.__mrConsentObs) return;
25    var obs = new MutationObserver(function(muts){
26      for (var i=0;i<muts.length;i++){
27        var m = muts[i];
28        if (!m.addedNodes) continue;
29        for (var j=0;j<m.addedNodes.length;j++){
30          var n = m.addedNodes[j];
31          if (!n) continue;
32          if (n.id === 'cookies-policy' || (n.querySelector && n.querySelector('#cookies-policy'))){
33            hideBanner();
34            blockBanner();
35          }
36        }
37      }
38    });
39    obs.observe(document.documentElement, { childList: true, subtree: true });
40    window.__mrConsentObs = obs;
41  }
42
43  function wireAcceptHandlers(){
44    // Accept via form submit
45    var form = document.querySelector('form[data-cookie-action="accept.all"]');
46    if (form && !form.__mrWired){
47      form.addEventListener('submit', function(){ setAccepted(); setTimeout(function(){ hideBanner(); blockBanner(); }, 0); }, true);
48      form.__mrWired = true;
49    }
50    // Accept via button click
51    document.addEventListener('click', function(e){
52      var btn = e.target && e.target.closest && e.target.closest('.cookiesBtn--accept, [data-cookie-action="accept.all"]');
53      if (btn){ setAccepted(); hideBanner(); blockBanner(); }
54    }, true);
55  }
56
57  // On load, enforce accepted state across all pages of same origin
58  var accepted = getAccepted();
59  if (accepted){
60    blockBanner();
61    hideBanner();
62    observeReinjection();
63    // Remove any cookie-consent loader scripts if present
64    var loaders = document.querySelectorAll('script[src*="cookie-consent/"]');
65    loaders.forEach(function(s){ if(s.parentNode) s.parentNode.removeChild(s); });
66  }
67
68  if (document.readyState === 'loading'){
69    document.addEventListener('DOMContentLoaded', function(){ wireAcceptHandlers(); if (getAccepted()){ blockBanner(); hideBanner(); observeReinjection(); } });
70  } else {
71    wireAcceptHandlers(); if (getAccepted()){ blockBanner(); hideBanner(); observeReinjection(); }
72  }
73})();
74
75

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.