var dt = new Date();
dt.setSeconds(dt.getSeconds() + 2);
document.cookie = "cookietest=1; expires=" + dt.toGMTString();
var cookiesEnabled = document.cookie.indexOf("cookietest=") != -1;
如果我只删除 过期 ,则可以。但是,它会在整个会话中留下一个虚拟cookie“cookietest = 1”。
我尝试直接在 document.cookie 中删除Cookie,但似乎无法做到这一点。 “删除”cookie的唯一方法是将其设置为过期。
有没有解决方法呢?
更新: Safari 4 Beta for Windows中存在一个错误。如果从现在起过期不超过1小时(3600秒),则分配document.cookie将失败。
我们可以在检测后删除cookie。
var dt = new Date();
dt.setSeconds(dt.getSeconds() + 2);
document.cookie = "cookietest=1";
var cookiesEnabled = document.cookie.indexOf("cookietest=") != -1;
document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT";
答案 0 :(得分:1)
我。该错误与safari构建无关。问题在于您设置的日期。当您使用dt.SetSeconds(dt.getSeconds()+ 2)时,您将cookie到期时间设置为当前时间+ 2秒。因此,当您加载页面并检查cookie时cookie将过期。
II。将时间增加到一分钟以上(60)并检查,它会起作用。
Ramjee
答案 1 :(得分:0)
这是真的 - Safari上的“短命”cookie存在问题(至少在Windows上) 如果cookie设置为在60分钟内过期 - 它会立即过期。