如何检测Safari 4 Beta中启用的cookie

时间:2009-06-04 10:49:49

标签: javascript cookies safari

Windows上的Safari 4 Beta(版本528.17)有一个错误。如果 到期 的值已分配给document.cookie,则Cookie不会更改。因此,下面的cookie启用检测不再起作用。

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";

2 个答案:

答案 0 :(得分:1)

我。该错误与safari构建无关。问题在于您设置的日期。当您使用dt.SetSeconds(dt.getSeconds()+ 2)时,您将cookie到期时间设置为当前时间+ 2秒。因此,当您加载页面并检查cookie时cookie将过期。

II。将时间增加到一分钟以上(60)并检查,它会起作用。

Ramjee

答案 1 :(得分:0)

这是真的 - Safari上的“短命”cookie存在问题(至少在Windows上) 如果cookie设置为在60分钟内过期 - 它会立即过期。