我正在使用jscookie,在触发弹出窗口后为用户分配cookie,以确保他们7天内不会再次看到它。我的代码在下面。
在两个页面上,该函数都会查找弹出cookie。如果没有cookie,则会触发弹出窗口并分配cookie。这两个功能都可以正常工作。
如果用户访问page A
,则会触发弹出窗口,并为他们分配cookie。然后,如果用户转到page B
,则他们仍然拥有cookie,并且不会触发弹出窗口。
但是,如果用户首先访问page B
,则会触发弹出窗口并分配cookie。 但是,如果用户随后转到page A
,则cookie不再显示在cookie列表中。 page A
的弹出窗口将触发并分配cookie。
这是踢脚线。如果返回页面B,我会看到我有两个完全相同的cookie。唯一的区别是path
。一个popup_cookie
来自页面A,另一个来自页面B。
示例:
Name Value Domain Path
popup_cookie true mydomain.com /page-a
popup_cookie true mydomain.com /page-b
那么为什么用户从page A
到page B
而不是从page B
到page A
时保留cookie?正如您在下面看到的那样,两个实例中的cookie分配方式都相同。
////Page A Popup
// Checks for popup cookie
if (Cookies.get('popup_cookie') == 'true') {
// Do nothing
} else if ($('#form').length) {
$('#form').appendTo('#page-a-popup-container');
$('body').on('mouseleave',function () {
if ($('#other-element').hasClass('visible')) {
// Do nothing
} else {
$('#page-a-popup-container').css('display', 'grid');
$('#popup-bg').fadeIn();
Cookies.set('popup_cookie', true, {expires: 7, path: ''});
$('body').off('mouseleave');
}
});
// Pop-up Close Button
$('#page-a-popup-close').click(function () {
$('#page-a-popup-container').hide();
$('#popup-bg').hide();
});
}
//// Page B Popup
// Checks for popup cookie
if (Cookies.get('popup_cookie') == 'true') {
// Do nothing
} else if ($('#form').length) {
$('#form').appendTo('#plan-b-popup-container');
$('body').on('mouseleave',function () {
if ($('#drip-header-119587').hasClass('drip-hidden')) {
// Do nothing
} else {
$('#plan-b-popup-container').css('display', 'grid');
$('#popup-bg').fadeIn();
Cookies.set('popup_cookie', true, {expires: 7, path: ''});
$('body').off('mouseleave');
}
});
// Pop-up Close Button
$('#plan-b-popup-close').click(function () {
$('#plan-b-popup-container').hide();
$('#popup-bg').hide();
});
}
答案 0 :(得分:0)
丹吉特。当然,在我将所有这些时间都花在这篇文章上之后,我就知道了:(
在这两个函数中,我所要做的全部都是将cookie的路径设置为path: '/'
。这样,在内部页面上分配的cookie就会保留在每个页面上。
显然,路径决定了cookie的活动位置。