【发布时间】:2014-09-23 23:34:58
【问题描述】:
如果存在特定 URL 参数,我正在尝试完全删除设置的 cookie。
我试过了:
function delete_cookie (cookie_name) {
var cookie_date = new Date ();
cookie_date.setTime(cookie_date.getTime()-1);
document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}
delete_cookie('MyCookie');
并且它将cookie值设置为null但cookie本身或至少cookie的名称保留在浏览器中,因此当再次打开相同的URL时,它不会从null更新cookie值到XXX 也没有创建具有 URL 值的第二个 cookie。
要重新设置新的 cookie,我必须右键单击 cookie 名称(在 Chrome 中)并选择删除。这样 cookie 名称及其值 null 将被真正删除,否则它会保留为 null 值。
我怎样才能完全删除 cookie 文件,而不只是使用 javascript 将其设置为 null?
** 新信息 **
我应该提到,我还有以下函数可以从 URL 参数中获取 cookie,并将其从第一页保存到最后一页(在将 cookie 值添加到另一个 URL 后应该将其删除)。第二个页面会将链接变成一个会话,其中 URL 参数不再可见
这是它的代码:
function URLparam(name) {
return unescape(
(RegExp(name + '(?:\\[\\d+\\])?=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
}
$(document).ready(function () {
if (URLparam("MyParameter") !== null && !get_cookie ("MyCookie")) {
set_cookie ("MyCookie", URLparam("MyParameter"));
}
有什么想法吗?
【问题讨论】:
-
那么你运行这段代码后实际 cookie的过期时间是多少?
-
@zerkms 我敢打赌它还在未来,它不会删除 cookie。我刚刚发布的链接看起来只要您设置过去的过期时间,cookie就会被删除。听起来对吗?我觉得这是该链接的副本
-
@Ian 不仅如此。另一个猜测是它是为另一个域/路径设置的。但看起来确实是重复的。
-
@Ian 到期日期保持为“会话”并且不会更改
标签: javascript cookies erase