0

这听起来很简单,我认为它应该很简单,但不知何故我无法让它工作......

我想使用 Javascript 设置一个 Cookie,当用户退出浏览器时,这个 Cookie 应该被删除。设置 cookie 并获取值不是问题。但是当我退出浏览器并重新打开它时,cookie 仍然存在(Firefox)。

我使用 jQuery 和Cookie-Plugin

这是我的测试代码:

$(document).ready(function(){
$('#output').append( '<li>initialize...</li>' );

var $cookieVal = $.cookie('testCookie');

$('#output').append( '<li>check cookie...</li>' );

if(!$cookieVal) {
    $('#output').append( '<li>set cookie...</li>' );
    $.cookie('testCookie', 'eat cookies', { path: '/' });
    //console.log( $.cookie() );
} else {
    $('#output').append( '<li>cookie is already set...</li>' );
    $('#output').append( '<li>cookie value: '+$.cookie('testCookie')+'</li>' );
}
});

请在jsFiddle找到工作示例。

4

2 回答 2

1

有一些代码对我有用。它应该在您关闭浏览器时到期,因为到期日期早于现在:

    var vEnd = new Date();
    vEnd.setDate(vEnd.getDate() - 1);
    var endOfCookieText = "; expires=" + vEnd.toGMTString() + ";  path=/";
    document.cookie = escape('testCookie') + "=" + escape("eat cookies") + endOfCookieText;

小提琴修改

请注意,小提琴在控制台上为我提供了一堆加载错误。

于 2013-08-07T19:10:37.933 回答
1

我开始怀疑您的测试方法是否可能是这里的问题。所以,我将以一种特定的方式来写这个。

实际答案:浏览器设置

在 Firefox 中,选项>常规>当 Firefox 启动时>“显示我上次的窗口和选项卡”将保留您之前的会话。更改此设置以查看这确实按预期工作。Firefox 正在延长您的会话。有关详细信息,请参阅此“错误”:http ://bugzilla.mozilla.org/show_bug.cgi?id=530594

大多数浏览器中都有类似的设置,它们的行为方式可能相同。


原答案:

我创建了一个使用 document.cookie 而不是 jquery cookie 插件的小提琴http://jsfiddle.net/8Ahg2/ 。这是你如何测试它。(以下来源)

  1. 将以下 URL 复制到剪贴板:http://fiddle.jshell.net/8Ahg2/show/
  2. 完全关闭您选择的浏览器 - 这应该与浏览器无关。
  3. 打开浏览器,粘贴网址。第一次应该说:check cookie... set cookie...
  4. 刷新页面,注意它现在应该显示 cookie 的值(“test”)
  5. 再次完全关闭浏览器。
  6. 导航到仍应在剪贴板中的 URL。*不要在第一个视图上刷新页面,它应该再次显示' check cookie... set cookie...'


js

$(document).ready(function () {
    $('#output').append('<li>initialize...</li>');
    //this regex gets the "name" cookie out of the string of cookies that look like this: "name=test;var2=hello;var3=world"
    var cookieVal = document.cookie.replace(/(?:(?:^|.*;\s*)name\s*\=\s*([^;]*).*$)|^.*$/, "$1");

    $('#output').append('<li>check cookie...</li>');

    if (!cookieVal) {
        $('#output').append('<li>set cookie...</li>');
        document.cookie = "name=test";
    } else {
        $('#output').append('<li>cookie is already set...</li>');
        $('#output').append('<li>cookie value: ' + cookieVal + '</li>');
    }
});
于 2013-08-07T20:03:12.483 回答