0

我正在使用 jscookie 在触发弹出窗口后为用户分配 cookie,以确保他们在 7 天内不会再次看到它。我的代码如下。

在这两个页面上,该函数都会查找弹出 cookie。如果 cookie 不存在,则会触发弹出窗口并分配 cookie。这两个功能都可以正常工作。

这是问题所在:

如果用户访问page A弹出窗口将触发,他们将被分配 cookie。然后,如果用户去page B他们仍然有 cookie 并且不会触发弹出窗口。

但是,如果用户page B首先访问,则会触发弹出窗口并分配 cookie。但是如果用户再去page Acookie 就不再出现在cookie 列表中。page A的弹出窗口将触发并分配 cookie。

这是踢球者。如果我回到页面,BI 会看到我有两个完全相同的 cookie。唯一的区别是path. 一个popup_cookie来自 A 页,另一个来自 B 页。

例子:

Name          Value  Domain        Path
popup_cookie  true   mydomain.com  /page-a
popup_cookie  true   mydomain.com  /page-b

问题:

那么为什么用户在 from to 时保留 cookiepage Apage B不是 from page Btopage A呢?正如您在下面看到的,在两种情况下都以相同的方式分配 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();
    });
}
4

1 回答 1

0

该死的。当然,在我花了这么多时间写这篇文章之后,我马上就明白了:(

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

显然,路径决定了 cookie 处于活动状态的位置。

于 2019-03-21T15:43:11.317 回答