JS скрипт оповещения об использовании cookie

Кнопка «Согласиться» вешает куку cookie_accept=true на год и при её наличии запрос на акцептирование больше не спрашивается. Кнопка «Отказаться» отправляет на пустую страницу about:blank Оверлей перекрывает всю страницу не позволяя без акцептирования кликать по всем елементам страницы и использовать сайт. Список страниц — исключений на которых проверка не производится совсем, в виде относительных урлов задается в массиве exceptionURLs Код можно затестить на любом сайте открыв средства разработчика и просто вставив его весь в консоль.

Скачать можно тут.

'use strict';
(function () {
const exceptionURLs = [ // относительные url для исключения принятие условий по cookie
    "/cookie_test?sfdfsd",
    "/page.html"
    ];
function setcookie(name, value, expires, path, domain, secure) {expires instanceof Date ? expires = expires.toGMTString() : typeof(expires) == 'number' && (expires = (new Date(+(new Date) + expires * 1e3)).toGMTString());let r = [name + "=" + escape(value)],s, i;for (i in s = { expires: expires, path: path, domain: domain }) { s[i] && r.push(i + "=" + s[i]); } return secure && r.push("secure"), document.cookie = r.join(";"), true;}
function getCookie(name) { let matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)")); return matches ? decodeURIComponent(matches[1]) : undefined; }
!exceptionURLs.includes(location.pathname + location.search) && !getCookie('cookie_accept') && (function () {
    let overlay               = document.createElement('div'),
        cookies_message_panel = document.createElement('div'),
        accept                = document.createElement('span'),
        not_accept            = document.createElement('span');
    overlay.style.cssText                           = 'display:block;position:fixed;left:0;top:0;right:0;buttom:0;z-index:999999999999;width:100%;height:100%;';
    cookies_message_panel.style.cssText             = 'position: absolute;bottom: 0;left: 0;right: 0;width: 100%;margin: 0;padding: 20px 10px;background: rgba(38,39,40,0.7);font-size: 13px;line-height: 1.3;justify-content: center;text-align: center;color: #fff;z-index: 99;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;';
    accept.style.cssText = not_accept.style.cssText = 'display:inline-block;background: rgba(38,39,40,0.7);padding:5px;margin:5px 5px 0 5px;cursor:pointer;';
    cookies_message_panel.innerHTML                 = 'Мы используем Cookie. Чтобы пользоваться сайтом, Вам нужно разрешить использование.<br>';
    accept.innerHTML                                = 'Согласиться';
    not_accept.innerHTML                            = 'Отказаться';
    accept.onclick = function () {setcookie('cookie_accept', true, 31536000);document.body.removeChild(this.parentNode.parentNode);}
    not_accept.onclick = function () {window.location = 'about:blank';}
    cookies_message_panel.appendChild(accept);
    cookies_message_panel.appendChild(not_accept);
    overlay.appendChild(cookies_message_panel);
    document.body.appendChild(overlay);
})();})();

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *