首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置jQuery cookie时遇到问题

问设置jQuery cookie时遇到问题
EN

Stack Overflow用户
提问于 2015-05-12 08:24:56
回答 1查看 1.3K关注 0票数 1

首先,对不起,我看到关于整个cookie问题有很多重复,但是我不得不添加这个问题,因为我对不同的jQuery cookie plugIns感到非常困惑。

我正在使用这个jQuery Cookie插件v1.4.1

我在我的一个页面上成功地实现了以下代码(不是主页!)

代码语言:javascript
复制
$(document).ready( function() { 
    if ($.cookie('noFadeWorks')) {
        // do something when initial effect on page enter has been already seen
    } else {
        // functions here to do the initial page enter effect
        $.cookie( 'noFadeWorks', true );    
    };
});

现在,这基本上适用于一些问题/问题:

  1. 按预期在Safari工作。当浏览器关闭并重新打开时,一切都按预期和期望从0开始。然而:谷歌Chrome,即使在关闭和重新开放之后,仍然拥有cookie。我的效果功能不再进入游戏。这里不想要。
  2. 如果从会话的某些点,我可以告诉浏览器忘记cookie,然后从0开始(在特定页面上有效果),那就太棒了。我试过这样做:$.removeCookie( 'noFadeWorks‘);在我的主页上,但这一点都不起作用。

我能解释一下自己吗?怎样才能正确地做到这一点呢?我也尝试过过期选项,但没有成功。

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2015-05-14 01:27:13

注意: jquery v1.4.1不接受数字作为值:https://github.com/js-cookie/js-cookie/tree/v1.4.1。但这不是问题所在。

我用jQueryv2.1.4和v1.4.1创建了一个小测试用例(来自上面的链接):

代码语言:javascript
复制
<!DOCTYPE html>
<script src="jquery.js"></script>
<script src="jquery-cookie.js"></script>
<script>
    $(document).ready( function() { 
        if ($.cookie('noFadeWorks')) {
            // do something when initial effect on page enter has been already seen
            alert( "has cookie!" );
        } else {
            // functions here to do the initial page enter effect
            $.cookie( 'noFadeWorks', 'true' );
            alert( "No cookie, creating..." );
        };
    });
</script>

发生了以下情况:

  1. 当您第一次输入时,它会创建cookie ("No,creates .“)
  2. 刷新页面时,cookie存在(“有cookie!")
  3. 如果您再次关闭并打开浏览器,它会显示(“有cookie!"),预期的结果是("No cookie,creating.”)因为在v1.4.1中,默认情况下它应该创建一个会话cookie,而且我们没有指定path: "/"

如果我使用ctrl + shift + n以匿名模式启动窗口,就会删除cookie (Chrome启动一个新的干净浏览器实例)。

这就是我的理论:

如果您选择在重新打开Chrome之后恢复选项卡,则会再次创建cookie,因为Chrome正在恢复它的窗口会话,包括以前存在的所有cookie。如果您禁用了chrome的“还原会话”功能,用户关闭浏览器后,cookies可能会被删除,就像预期的那样。

我没有测试禁用该功能,但从直觉上看,这似乎是问题所在。

如果从会话的某些点,我可以告诉浏览器忘记cookie,然后从0开始(在特定页面上有效果),那就太棒了。

您可以指定希望cookie有效的路径,可以从更接近根的另一条路径(如)读取cookie而不是:

代码语言:javascript
复制
<!DOCTYPE html>
<script src="jquery.js"></script>
<script src="jquery-cookie.js"></script>
<script>
    $(document).ready( function() {
        if ($.cookie('noFadeWorks')) {
            // do something when initial effect on page enter has been already seen
            alert( "has cookie!" );
        } else {
            // functions here to do the initial page enter effect
            $.cookie( 'noFadeWorks', 'true', {
                // It will not be visible in the root, only in pages inside the "/dir/" path
                path: "/dir/"
            });
            alert( "No cookie, creating..." );
        };
    });
</script>

我建议试用jquery的最新版本(现在是js-cookie):https://github.com/js-cookie/js-cookie/releases。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30185501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档