这听起来很简单,我认为它应该很简单,但不知怎的,我不能让它起作用......
我想使用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找到工作示例。
答案 0 :(得分:1)
有一些代码对我有用。它应该在您关闭浏览器时到期,因为到期日期即将到期:
var vEnd = new Date();
vEnd.setDate(vEnd.getDate() - 1);
var endOfCookieText = "; expires=" + vEnd.toGMTString() + "; path=/";
document.cookie = escape('testCookie') + "=" + escape("eat cookies") + endOfCookieText;
请注意,小提琴为我提供了一堆加载错误。
答案 1 :(得分:1)
我开始怀疑你的测试方法是否可能成为问题。所以,我将以特定的方式写这个。
在Firefox中,选项&gt;常规&gt;当Firefox启动时&gt;“从上次显示我的窗口和标签页”将保留您之前的会话。更改此设置,以确保它确实按预期工作。 Firefox正在延长你的会话时间。有关详细信息,请参阅此“错误”:http://bugzilla.mozilla.org/show_bug.cgi?id=530594
大多数浏览器中的类似设置可能表现相同。
<小时/>
我创建了一个小提琴,http://jsfiddle.net/8Ahg2/使用document.cookie而不是jquery cookie插件。这是你如何测试这个。 (来源见下文)
http://fiddle.jshell.net/8Ahg2/show/
check cookie...
set cookie...
check cookie...
set cookie...
'<小时/>
$(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>');
}
});