Почему не отключается popup?
На сайт добавил дисклеймер типа "Для улучшения работы сайта и его взаимодействия с пользователями мы используем файлы cookie. Продолжая работу с сайтом, Вы разрешаете..."
Это popup, который появ-ся,когда заходишь на сайт. Можно нажать "Принять" или нажать крестик, чтобы закрыть попап.
Так вот проблема в том, что нажимаешь "Принять", а попап возникает каждый раз, когда переходишь по страницам сайта.
Код:
(function(document, undefined){ let cookieBanner = document.getElementById('cookie-banner'); if(cookieBanner !== null){ let closeButton = document.getElementById('close_cookie_agreement_block'); let agreeButton = document.getElementById('cookie_policy_agree'); let close = function (){ cookieBanner.remove(); cookieBanner = null; }; let updateCookie = function(){ let date = new Date(Date.now() + 365*86400e3); date = date.toUTCString(); document.cookie = 'NOT_SHOW_COOKIE_BANNER=Y; path=/; expires=' + date; }; closeButton.addEventListener('click', close, {once: true, passive: true}); agreeButton.addEventListener('click', function (){ updateCookie(); close(); }, {once: true, passive: true}); } })(document); |
(function(document, undefined){ let cookieBanner = document.getElementById('cookie-banner'); if(cookieBanner !== null){ let closeButton = document.getElementById('close_cookie_agreement_block'); let agreeButton = document.getElementById('cookie_policy_agree'); let close = function (){ cookieBanner.remove(); cookieBanner = null; }; let updateCookie = function(){ let date = new Date(Date.now() + 365*86400e3); date = date.toUTCString(); document.cookie = 'NOT_SHOW_COOKIE_BANNER=Y; path=/; expires=' + date; }; closeButton.addEventListener('click', close, {once: true, passive: true}); agreeButton.addEventListener('click', function (){ updateCookie(); close(); }, {once: true, passive: true}); } })(document);
Почему так происходит? Код взят с интернетов.
Дополнительно:
Для этого кода на бэкенде должна проверяться кука NOT_SHOW_COOKIE_BANNER и, если она установлена в 'Y', то баннер вообще не должен выводиться на страницу.
- правильно понял, что со стороны фронта все сделано, остальное - дело бэкенда?
- rinatoptimus, Ну, при желании, можно и на фронте проверять куку и сразу скрывать баннер. Но проще отключать его на бэке.
- бред. ни к чему тут бек
кука отлично проверяется на фронте: если уже есть и равна Y не заходишь в условие if(cookieBanner !== null)let cookieBanner = document.getElementById('cookie-banner');
let showCookieBanner = readCookieByName('NOT_SHOW_COOKIE_BANNER') != 'Y'if (cookieBanner && showCookieBanner) {
...как прочитать куку по имени на фронте ответит гугл
- necrodeflorator, Вот только сначала баннер будет показан, а только потом, когда загрузится DOM и скрипт, баннер будет убран. Или надо, опять же, с бэка передавать баннер скрытым, а потом скриптом его включать.
- Rsa97, баннер должен быть изначально скрыт стилями, а скриптом уже показывать в блоке if.
Согласен, не дописал
Вешать на бек логику отображения этой филькиной грамоты всё равно нет смысла
- necrodeflorator, Тогда и в куки её пихать не надо, зачем на сервер гонять лишнее. Достаточно localStorage. А раз что-то пишется в куки, то, видимо, обработка предполагается бэком.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы понять, почему popup не отключается, нужно провести некоторые проверки и анализировать код, который отвечает за отображение popup на вашем сайте. Вот несколько шагов, которые могут помочь вам разобраться в этой проблеме:
1. Проверьте, что вы правильно инициализируете скрипт, который отвечает за отображение popup. Убедитесь, что вы вызываете функцию или метод, который отключает popup, в нужном месте и с правильными параметрами.
2. Проверьте CSS стили, которые могут влиять на отображение popup. Убедитесь, что нет каких-либо стилей, которые могут перекрывать или скрывать popup.
3. Проверьте, есть ли какие-либо JavaScript ошибки в консоли браузера. Ошибки в JavaScript коде могут быть причиной некорректной работы popup.
4. Проверьте, что у вас нет блокировщиков popup-окон или других расширений браузера, которые могут блокировать отображение popup на вашем сайте.
Если после выполнения этих шагов проблема не будет решена, вам может потребоваться провести дополнительное исследование кода и настроек вашего сайта. Может быть, вам придется обратиться к разработчику или специалисту по веб-разработке для более подробной диагностики проблемы.
Пример использования тега
для отображения кода: <pre lang="php"> function disablePopup() { // код, который отключает popup }