PageSourceSearch

https://nikatv.ru/public/js/cookie-banner.js

js nikatv.ru collected 2026-10-02 05:38:04 UTC 3,733 bytes, 47 lines download raw bytes

1(function(){
2  var KEY = 'cookieConsent.v1',
3  DAYS = 365,
4  THEME = 'auto',
5  doc = document;
6
7  function now(){ return Date.now(); }
8  function inDays(d){ return d*24*60*60*1e3; }
9  function load(){ try{ return JSON.parse(localStorage.getItem(KEY)) || null }catch(_){ return null } }
10  function save(v){ try{ localStorage.setItem(KEY, JSON.stringify(v)) }catch(_){ } try{ window.dispatchEvent(new CustomEvent('cookieConsentChange',{detail:v})) }catch(_){ } }
11  function expired(o){ return !o || (o.expires && o.expires < now()); }
12  function ready(fn){ if(doc.body) return fn(); if(doc.readyState!=='loading') return fn(); doc.addEventListener('DOMContentLoaded', fn, {once:true}); }
13
14  function run(){
15  if(THEME==='dark')  doc.documentElement.classList.add('cb-force-dark');
16  if(THEME==='light') doc.documentElement.classList.remove('cb-force-dark');
17  if(THEME==='auto'){
18  try{
19  var mq = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)');
20  function apply(){ if(mq && mq.matches) doc.documentElement.classList.add('cb-force-dark'); else doc.documentElement.classList.remove('cb-force-dark'); }
21  apply();
22  if(mq && typeof mq.addEventListener==='function') mq.addEventListener('change', apply);
23  else if(mq && typeof mq.addListener==='function') mq.addListener(apply);
24}catch(_){ }
25}
26  if(!expired(load())) return;
27
28  var st = doc.createElement('style');
29  st.textContent = "/* Cookie banner styles */\n.cb-wrap{position:fixed;z-index:2147483647;max-width:360px;background:var(--panel,#f8fafc);color:var(--text,#101828);border:1px solid var(--border,#e5e7eb);border-radius:10px;box-shadow:0 6px 22px rgba(0,0,0,.18);padding:12px 12px}\n.cb-wrap h3{margin:0 0 6px;font:600 16px/1.3 system-ui,-apple-system,Segoe UI,Roboto,Arial}\n.cb-wrap p{margin:0 0 8px;font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Arial;color:var(--muted,#475467)}\n.cb-row{display:flex;gap:6px;flex-wrap:wrap}\n.cb-btn{appearance:none;border:none;border-radius:8px;padding:10px 14px;cursor:pointer;font:600 14px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial}\n.cb-primary{background:#0071b6;color:#fff}\n.cb-link{color:var(--accent,#0c056d);text-decoration:underline}\n.cb-pos-bottom-right{right:20px;bottom:20px}\n.cb-pos-bottom-left{left:20px;bottom:20px}\n.cb-pos-bottom-center{left:50%;transform:translateX(-50%);bottom:20px}\n.cb-wrap.cb-pos-bottom-center{max-width:560px;width:min(560px,calc(100vw - 40px))}\nhtml.cb-force-dark .cb-wrap{background:#171a2e;color:#eef3ff;border-color:#25294a}\nhtml.cb-force-dark .cb-wrap p{color:#9aa3b2}\nhtml.cb-force-dark .cb-link{color:#6ae3ff}";
30  (doc.head || doc.documentElement).appendChild(st);
31
32  var wrap = doc.createElement('div');
33  wrap.innerHTML = "<div class=\"cb-wrap cb-pos-bottom-right\" role=\"dialog\" aria-live=\"polite\" aria-label=\"Cookie consent\"><h3>Мы используем cookie</h3><p>Мы используем файлы cookie, чтобы улучшать работу сайта и анализировать трафик. Оставаясь с нами, вы соглашаетесь на их применение <a href=\"https://nikatv.ru/public/user_upload/files/Docs/Confidential.pdf\" target=\"_blank\" rel=\"nofollow noopener\">Подробнее</a></p><div class=\"cb-row\"><button class=\"b-button\" data-action=\"accept\">Принять</button></div></div>";
34  var el = wrap.firstChild;
35  (doc.body || doc.documentElement).appendChild(el);
36
37  el.addEventListener('click', function(e){
38  if(e.target && e.target.getAttribute('data-action')==='accept'){
39  e.preventDefault();
40  save({granted:true, timestamp:now(), expires:now()+inDays(DAYS)});
41  el.remove();
42}
43});
44}
45
46  ready(run);
47})();

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.