Проблема с записью куки
Всем привет )
Ребят подскажите пожалуйста в чем проблема. Желательно ткнуть носом и показать решение, буду признателен. Есть два попап окна и оба с записью куки. Когда закрываю первый попап и на него вешается куки, то он сразу вешается и на второй попап. А нужно чтоб вешался только на тот, что был закрыт. Подскажите пожалуйста. Попап 1 // PopUp Landing function getCookie(name) { var matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; } var alertwin = getCookie("popup_landing"); if (alertwin != "no") { $(document).mouseleave(function(e){ if (e.clientY < 0) { $(".exitblock").show(500); var date = new Date; date.setDate(date.getDate() + 1); document.cookie = "popup_landing=no; path=/; expires=" + date.toUTCString(); } }); $(document).click(function(e) { if (($(".exitblock").is(':visible')) && (!$(e.target).closest(".exitblock .modaltext").length)) { $(".exitblock").hide(500, function() { $(".exitblock").remove() }); } }); $(function(){ $('#close-popup').click(function(){ $(".exitblock").hide(500, function() { $(".exitblock").remove() }); }); }); } Попап 2 // PopUp Form function getCookie(name) { var matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; } function writeCookie() { var date = new Date; date.setDate(date.getDate() + 1); document.cookie = "popup_form=no; path=/; expires=" + date.toUTCString(); } var alertwin = getCookie("popup_form"); if (alertwin != "no") { if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { window.setTimeout(function() { if ($("#exitblock_form").is(':hidden')) { $("#exitblock_form").show(500); } writeCookie(); }, 300000); } $(document).mouseleave(function(e){ if (e.clientY < 0) { $("#exitblock_form").show(500); writeCookie(); } }); $(document).click(function(e) { if (($("#exitblock_form").is(':visible')) && (!$(e.target).closest(".exitblock .modaltext").length)) { $("#exitblock_form").hide(500, function() { $("#exitblock_form").remove() }); } }); $(function(){ $('#close-popup').click(function(){ $("#exitblock_form").hide(500, function() { $("#exitblock_form").remove() }); }); }); } |
Без литра не разберешь...
Зачем вам на одной странице дважды объявлять функцию "getCookie"? Где у вас вообще обрабатывается закрытие окна с записью куки? Идентификатор тега должен быть уникальным. Вы либо на одну кнопку вешаете два обработчика, либо у вас две кнопки с одним идентификатором. |
Цитата:
Добрый день. Куки вешается на кнопку закрытия, либо же если закрыть за областью. Первый попап тут https://molnimoney.top/ А второй тут https://molnimoney.top/profile/ У кнопок и у самих форм разный id. |
Цитата:
|
Цитата:
$(function(){ $('#close-popup').click(function(){ $(".exitblock").hide(500, function() { $(".exitblock").remove() }); }); }); Запись куки на кнопку закрытия и на закрытие в не области. // проверяем, есть ли у нас cookie, мы не показываем окно и если нет, запускаем показ var alertwin = getCookie("popup_landing"); if (alertwin != "no") { $(document).mouseleave(function(e){ if (e.clientY < 0) { $(".exitblock").show(500); // записываем cookie на 1 день, с которой мы не показываем окно var date = new Date; date.setDate(date.getDate() + 1); document.cookie = "popup_landing=no; path=/; expires=" + date.toUTCString(); } }); // закрытие в не области $(document).click(function(e) { if (($(".exitblock").is(':visible')) && (!$(e.target).closest(".exitblock .modaltext").length)) { $(".exitblock").hide(500, function() { $(".exitblock").remove() }); } }); // кнопка закрытия $(function(){ $('#close-popup').click(function(){ $(".exitblock").hide(500, function() { $(".exitblock").remove() }); }); }); } |
Цитата:
Печеньки не записываются ни на кнопки, ни на области. Не сношайте мозг, пожалуйста. В вашем коде кукисы записываются только когда на document происходит (либо до него всплывает) событие mouseleave со свойством clientY имеющим отрицательное значение (это вообще возможно?). При кликах на #close-popup кукисы не пишутся. |
Цитата:
Что смог собрать, то и собрал своими силами. Подскажите пожалуйста как записывать куки на mouseleave, только на каждый попап по отдельности, а не на 2 сразу. |
Nik_Dev, возможно вам нужно что-то такое:
function setCookie(name, value, days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + (value || "") + expires + "; path=/"; }; (function(cookieName) { if (document.cookie.indexOf(cookieName) >= 0) return; const hidePopup = function() { $(".exitblock").hide(500, function() { $(this).remove(); setCookie(cookieName, 'no', 1); }); }; $('#close-popup').click(hidePopup); $(document).on('click', ':not(.exitblock .modaltext)', hidePopup); })('popup_landing');//popup_landing на нужной странице заменить на popup_form |
Цитата:
Спасибо огромное :thanks: |
Цитата:
Только теперь попап исчезает даже если нажать на него, а не за его пределы. То есть при нажатие на поле input или на кнопку submit. |
Часовой пояс GMT +3, время: 09:02. |