В этой заметке покажу, как сделать уведомление об использовании Cookie на сайте без использования плагинов. Такое предупреждение будет всплывать в виде плашки внизу сайта при его первом посещении.
Зачем вообще нам эта штуковина? Дело в том, что уведомление об использовании файлов cookie на сайте является обязательным по законодательству во многих странах, включая страны Европейского союза.
Это связано с тем, что файлы cookie могут собирать и обрабатывать персональные данные пользователей, такие как их местоположение, предпочтения и привычки. Уведомление позволяет пользователям быть информированными о том, что их данные могут быть использованы, и дает им возможность контролировать свою конфиденциальность в Интернете.
Файлы Cookie могут быть полезны для улучшения опыта пользователя, например, для запоминания его предпочтений и автоматического входа на сайт без необходимости повторного ввода имени и пароля. Однако некоторые файлы Cookie могут использоваться для отслеживания пользовательской активности в Интернете, поэтому пользователи должны сами решить, пользоваться тем или иным сайтом, или нет.
Реализуется возможность такого уведомления пользователя при помощи вот такого JS-кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// Проверяем, была ли плашка уже показана if (!localStorage.getItem('notificationShown')) { // Создание элемента плашки const notification = document.createElement('div'); notification.classList.add('notification'); notification.textContent = 'Этот сайт использует Cookie!'; // Добавление кнопки "Хорошо" на плашку const closeBtn = document.createElement('button'); closeBtn.classList.add('close-btn'); closeBtn.textContent = 'Хорошо'; notification.appendChild(closeBtn); // Добавление плашки внизу экрана document.body.appendChild(notification); // Анимация появления плашки notification.style.transform = 'translateY(100%)'; notification.style.opacity = '0'; setTimeout(() => { notification.style.transform = 'translateY(0)'; notification.style.opacity = '1'; }, 1000); // Закрытие плашки по клику на кнопку "Хорошо" closeBtn.addEventListener('click', () => { notification.style.transform = 'translateY(100%)'; notification.style.opacity = '0'; localStorage.setItem('notificationShown', true); }); } |
Объясню, за что отвечает каждая строка представленного кода:
- if (!localStorage.getItem(‘notificationShown’)): эта строка проверяет, была ли плашка уже показана пользователю. Если значение ключа ‘notificationShown’ в объекте localStorage равно null, то это означает, что плашка ещё не была показана, и мы можем продолжить её отображение.
- const notification = document.createElement(‘div’);: создает новый элемент div, который будет использоваться для отображения плашки на странице.
- notification.classList.add(‘notification’);: добавляет класс notification к элементу div, чтобы мы могли стилизовать его через CSS.
- notification.textContent = ‘Этот сайт использует Cookie!’;: строчка устанавливает текст, который будет отображаться на плашке.
- const closeBtn = document.createElement(‘button’);: создает новый элемент button, который будет использоваться для отображения кнопки «Хорошо».
- closeBtn.classList.add(‘close-btn’);: добавляет класс close-btn к элементу button, чтобы мы могли стилизовать его через CSS.
- closeBtn.textContent = ‘Хорошо’;: устанавливает текст, который будет отображаться на кнопке.
- notification.appendChild(closeBtn);: добавляет кнопку «Хорошо» на плашку.
- document.body.appendChild(notification);: добавляет плашку в конец тела документа (body).
- notification.style.transform = ‘translateY(100%)’; notification.style.opacity = ‘0’;: устанавливают начальные значения стилей для анимации появления плашки.
- setTimeout(() => { notification.style.transform = ‘translateY(0)’; notification.style.opacity = ‘1’; }, 1000);: этот код запускает анимацию появления плашки через секунду после её отображения.
- closeBtn.addEventListener(‘click’, () => { … });: код добавляет обработчик событий на кнопку «Хорошо». Когда пользователь нажимает на кнопку, плашка скрывается, и значение ключа ‘notificationShown’ в объекте localStorage устанавливается в true, чтобы в следующий раз не отображать плашку снова.
В целом, этот код создаёт и отображает плашку на странице. Затем добавляет анимацию появления и обработчик событий на кнопку «Хорошо».
Как добавить скрипт на сайт, работающий на WordPress? Есть несколько способов добавления JavaScript-файлов на сайт. Вот один пример через тему оформления.
Можно добавить свой JavaScript-файл в папку темы WordPress и подключить его в файле functions.php темы. Для этого нужно создать папку js в корневой директории рабочей темы и поместить туда файл скрипта. Затем в файле functions.php темы можно добавить следующий код:
1 2 3 4 |
function my_theme_scripts() { wp_enqueue_script( 'my-script', get_template_directory_uri() . '/js/myscript.js', array(), '1.0', true ); } add_action( 'wp_enqueue_scripts', 'my_theme_scripts' ); |
Этот код добавит скрипт на сайт WordPress. Всё очень просто.
Теперь давайте стилизуем плашку. Следующий код надо добавить в файл стилей style.css:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
.notification { position: fixed; bottom: 0; left: 0; width: 100%; padding: 16px; background-color: #333; color: #fff; text-align: center; font-size: 16px; } .close-btn { display: inline-block; margin-top: 8px; margin-left: 50px; /* Добавляем отступ слева */ padding: 8px 16px; background-color: #fff; color: #333; border: none; border-radius: 4px; font-size: 16px; font-weight: bold; line-height: 1; cursor: pointer; } .close-btn:hover { background-color: #f00; color: #fff; } /* Медиа-запрос для мобильных устройств */ @media (max-width: 767px) { .notification { font-size: 14px; /* Уменьшаем размер шрифта */ padding: 12px; /* Уменьшаем отступы */ } .close-btn { margin-left: 16px; /* Уменьшаем отступ слева */ margin-right: -16px; /* Добавляем отступ справа */ padding: 6px; /* Уменьшаем размер кнопки */ font-size: 14px; /* Уменьшаем размер шрифта кнопки */ } } |
В коде добавлен медиа-запрос для мобильных устройств, чтобы уменьшить размер шрифта и отступов плашки, а также уменьшить размер кнопки и добавить отступ справа. Это позволит плашке хорошо смотреться на мобильных устройствах.
Всем WEB!
Супер! Спасибо за простое решение, минус один плагин.
Отлично, рад что информация пригодилась.
Неплохой вариант использования куки на сайте!
Да, неплохой и простой.