Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...
Принять
(function() {
if (window.__cookieConsentInitialized) { return; }
window.__cookieConsentInitialized = true;
const COOKIE_NAME = 'user_cookie_consent';
const banner = document.getElementById('cookie-consent-banner');
const acceptBtn = document.getElementById('cookie-consent-accept');
const declineBtn = document.getElementById('cookie-consent-decline');
// Определяем домен для куки (чтобы работало и на www, и на корне домена)
const computeCookieDomain = (hostname) => {
// Не задаём domain для localhost и IP
if (hostname === 'localhost' || /^\d+\.\d+\.\d+\.\d+$/.test(hostname)) return '';
const parts = hostname.split('.');
if (parts.length <= 1) return '';
// Пытаемся корректно обработать ccTLD (co.uk и т.п.)
let candidate = parts.slice(-2).join('.');
if (parts.length >= 3 && parts[parts.length - 2].length <= 3) {
candidate = parts.slice(-3).join('.');
}
return '.' + candidate;
};
const COOKIE_DOMAIN = computeCookieDomain(location.hostname);
const COOKIE_SECURE = location.protocol === 'https:' ? '; Secure' : '';
function getCookie(name) {
const cookies = document.cookie ? document.cookie.split(';') : [];
for (let i = cookies.length - 1; i >= 0; i--) {
const cookie = cookies[i];
const separatorIndex = cookie.indexOf('=');
if (separatorIndex === -1) continue;
const cookieName = decodeURIComponent(cookie.slice(0, separatorIndex).trim());
if (cookieName === name) {
const cookieValue = cookie.slice(separatorIndex + 1);
try { return decodeURIComponent(cookieValue); } catch (e) { return cookieValue; }
}
}
return null;
}
function getConsent() {
return getCookie(COOKIE_NAME) || localStorage.getItem(COOKIE_NAME);
}
function setCookie(name, value, days) {
let expires = "";
if (days) {
const date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
const maxAge = days ? "; Max-Age=" + (days * 24 * 60 * 60) : "";
const encodedValue = encodeURIComponent(value || "");
const base = name + "=" + encodedValue + expires + maxAge + "; path=/; SameSite=Lax";
// 1) host-only cookie
document.cookie = base + COOKIE_SECURE;
// 2) domain cookie (для охвата поддоменов)
if (COOKIE_DOMAIN) {
document.cookie = base + "; domain=" + COOKIE_DOMAIN + COOKIE_SECURE;
}
try { localStorage.setItem(name, value); } catch (e) {}
}
function deleteCookie(name) {
// Удаляем как host-only, так и доменную куки (если была)
document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT' + COOKIE_SECURE + ';';
if (COOKIE_DOMAIN) {
document.cookie = name + '=; Path=/; Domain=' + COOKIE_DOMAIN + '; Expires=Thu, 01 Jan 1970 00:00:01 GMT' + COOKIE_SECURE + ';';
}
try { localStorage.removeItem(name); } catch (e) {}
}
function loadScripts() {
const scriptsContainer = document.createElement('div');
const scriptsString = "\r\n