我知道这个问题被问了一千次,但是没有一个答案真正给了我想要的。我正在使用jQuery cookie来存储一些信息,但我希望它们在浏览器关闭时过期。window.unload
不是可行的选项(即无效)。
我的问题是:是否实际上可以将cookie设置为在浏览器关闭时过期,就像会话一样?如果可以,有人知道如何做吗?
更新:原来很简单,只需不传递任何到期时间(expiry: 0不起作用),这就解释了为什么没有太多问题。
谢谢大家。
我知道这个问题被问了一千次,但是没有一个答案真正给了我想要的。我正在使用jQuery cookie来存储一些信息,但我希望它们在浏览器关闭时过期。window.unload
不是可行的选项(即无效)。
我的问题是:是否实际上可以将cookie设置为在浏览器关闭时过期,就像会话一样?如果可以,有人知道如何做吗?
更新:原来很简单,只需不传递任何到期时间(expiry: 0不起作用),这就解释了为什么没有太多问题。
谢谢大家。
原来这很简单,不要传递过期时间: 0(这行不通),干脆就不传过期时间。这就解释了为什么没有太多问题了。
所以不要像下面这样带着标志传递过期时间:
$.cookie(key, value, { expiry: 0, domain: '', path: '' });
你只需要省略到期日期:
$.cookie(key, value, { domain: '', path: '' });
它起作用了。它是如此简单,以至于我感到困惑。
但无论如何感谢你!
但是,jQuery cookie不支持Discard属性。您需要像这样扩展jQuery-Cookie代码(原始文件的第57行左右):
return (document.cookie = [
config.raw ? key : encodeURIComponent(key),
'=',
config.raw ? value : encodeURIComponent(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.discard ? '; Discard=' + options.discard : '',
options.secure ? '; secure' : ''
].join(''));
$.cookie.defaults = { path: '/', expires: 365 };
$.cookie(key, value, { expires: null });