// функция возвращает cookie с именем name, если есть, если нет, то undefined
function getCookie(name) {
var matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}
// проверяем, есть ли у нас cookie, с которой мы не показываем окно и если нет, запускаем показ
var alertwin = getCookie("alertwin");
if (alertwin != "no") {
$(document).mouseleave(function(e){
if (e.clientY < 0) {
$(".exitblock").fadeIn("fast");
// записываем cookie на 1 день, с которой мы не показываем окно
var date = new Date;
date.setDate(date.getDate() + 1);
document.cookie = "alertwin=no; path=/; expires=" + date.toUTCString();
}
});
$(document).click(function(e) {
if (($(".exitblock").is(':visible')) && (!$(e.target).closest(".exitblock .modaltext").length)) {
$(".exitblock").remove();
}
});
}
В чём может быть проблема?
Но проблема в том, что модальное окно показывается постоянно при попытке закрыть страницу. При этом сами куки устанавливаются.
...
var alertwin = getCookie("alertwin");//при отсутствии куки тут пусто.
//значение легло при загрузке страницы
//значит после установки куки надо перезагрузить страницу, чтоб там что-то было
//либо сделать повторный запрос getCookie(name)
if (alertwin != "no") {
$(document).mouseleave(function(e){
if (e.clientY < 0) {
...
_________________________________________________________________________
...
$(document).mouseleave(function(e){
var alertwin = getCookie("alertwin");//получаем куку при каждом событии mouseleave
//при первом событии там пусто и код ниже отработает
//при повторном наведении там не пусто и код ниже не отработает
if (alertwin != "no") {
...
function getCookie(name) {
var matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}
// проверяем, есть ли у нас cookie, с которой мы не показываем окно и если нет, запускаем показ
var alertwin = getCookie("alertwin");
if (alertwin != "no") {
$(document).mouseleave(function(e){
if (e.clientY < 0) {
$(".overlay_stop").fadeIn("fast");
// записываем cookie на 1 день, с которой мы не показываем окно
var date = new Date;
date.setDate(date.getDate() + 1);
document.cookie = "alertwin=no; path=/; expires=" + date.toUTCString();
}
});
}
$(document).mouseleave(function(e){
var alertwin = getCookie("alertwin");
if(alertwin != "no") {
if (e.clientY < 0) {
$(".overlay_stop").fadeIn("fast");
// записываем cookie на 1 день, с которой мы не показываем окно
var date = new Date;
date.setDate(date.getDate() + 1);
document.cookie = "alertwin=no; path=/; expires=" + date.toUTCString();
}
}
});