用户离开页面时不保留cookie

时间:2019-03-21 15:31:39

标签: javascript jquery cookies js-cookie

我正在使用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 Apage B而不是从page Bpage 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();
    });
}

1 个答案:

答案 0 :(得分:0)

丹吉特。当然,在我将所有这些时间都花在这篇文章上之后,我就知道了:(

在这两个函数中,我所要做的全部都是将cookie的路径设置为path: '/'。这样,在内部页面上分配的cookie就会保留在每个页面上。

显然,路径决定了cookie的活动位置。