23.11.2018, 03:07
|
Аспирант
|
|
Регистрация: 26.12.2017
Сообщений: 30
|
|
Проблема с записью куки
Всем привет )
Ребят подскажите пожалуйста в чем проблема.
Желательно ткнуть носом и показать решение, буду признателен.
Есть два попап окна и оба с записью куки.
Когда закрываю первый попап и на него вешается куки, то он сразу вешается и на второй попап.
А нужно чтоб вешался только на тот, что был закрыт.
Подскажите пожалуйста.
Попап 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()
});
});
});
}
|
|
23.11.2018, 10:07
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Без литра не разберешь...
Зачем вам на одной странице дважды объявлять функцию "getCookie"?
Где у вас вообще обрабатывается закрытие окна с записью куки?
Идентификатор тега должен быть уникальным.
Вы либо на одну кнопку вешаете два обработчика, либо у вас две кнопки с одним идентификатором.
|
|
23.11.2018, 14:20
|
Аспирант
|
|
Регистрация: 26.12.2017
Сообщений: 30
|
|
Сообщение от Nexus
|
Без литра не разберешь...
Зачем вам на одной странице дважды объявлять функцию "getCookie"?
Где у вас вообще обрабатывается закрытие окна с записью куки?
Идентификатор тега должен быть уникальным.
Вы либо на одну кнопку вешаете два обработчика, либо у вас две кнопки с одним идентификатором.
|
Добрый день.
Куки вешается на кнопку закрытия, либо же если закрыть за областью.
Первый попап тут https://molnimoney.top/
А второй тут https://molnimoney.top/profile/
У кнопок и у самих форм разный id.
Последний раз редактировалось Nik_Dev, 23.11.2018 в 14:23.
Причина: Дополнил
|
|
23.11.2018, 14:41
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Сообщение от Nik_Dev
|
Куки вешается на кнопку закрытия
|
в коде можете это показать?
|
|
23.11.2018, 15:31
|
Аспирант
|
|
Регистрация: 26.12.2017
Сообщений: 30
|
|
Сообщение от Nexus
|
в коде можете это показать?
|
Кнопка закрытия
$(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()
});
});
});
}
Последний раз редактировалось Nik_Dev, 23.11.2018 в 15:36.
|
|
23.11.2018, 15:52
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Сообщение от Nik_Dev
|
Запись куки на кнопку закрытия и на закрытие в не области.
|
Печеньки не записываются ни на кнопки, ни на области.
Не сношайте мозг, пожалуйста.
В вашем коде кукисы записываются только когда на document происходит (либо до него всплывает) событие mouseleave со свойством clientY имеющим отрицательное значение (это вообще возможно?).
При кликах на #close-popup кукисы не пишутся.
|
|
23.11.2018, 15:57
|
Аспирант
|
|
Регистрация: 26.12.2017
Сообщений: 30
|
|
Сообщение от Nexus
|
Печеньки не записываются ни на кнопки, ни на области.
Не сношайте мозг, пожалуйста.
В вашем коде кукисы записываются только когда на document происходит (либо до него всплывает) событие mouseleave со свойством clientY имеющим отрицательное значение (это вообще возможно?).
При кликах на #close-popup кукисы не пишутся.
|
Прошу прощение, в js не силен.
Что смог собрать, то и собрал своими силами.
Подскажите пожалуйста как записывать куки на mouseleave, только на каждый попап по отдельности, а не на 2 сразу.
|
|
23.11.2018, 16:01
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
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
Последний раз редактировалось Nexus, 23.11.2018 в 16:04.
|
|
23.11.2018, 18:03
|
Аспирант
|
|
Регистрация: 26.12.2017
Сообщений: 30
|
|
Сообщение от Nexus
|
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
|
Да, всё работает. Совместил со своим кодом, всё идеально.
Спасибо огромное
|
|
23.11.2018, 20:28
|
Аспирант
|
|
Регистрация: 26.12.2017
Сообщений: 30
|
|
Сообщение от Nexus
|
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
|
Только теперь попап исчезает даже если нажать на него, а не за его пределы.
То есть при нажатие на поле input или на кнопку submit.
|
|
|
|