检查客户端是否在JavaScript中接受cookie?

16
有没有办法只使用 JavaScript 代码检查客户端是否接受 cookie?

当然,尝试设置一个并读取它。 - JAL
3个回答

24

这个应该管用:

function areCookiesEnabled() {
  document.cookie = "__verify=1";
  var supportsCookies = document.cookie.length >= 1 && 
                        document.cookie.indexOf("__verify=1") !== -1;
  var thePast = new Date(1976, 8, 16);
  document.cookie = "__verify=1;expires=" + thePast.toUTCString();
  return supportsCookies;
}

这将设置一个基于会话的过期时间的Cookie,检查其是否存在,然后将其再次设置为过去的时间,从而将其删除。


4
为什么要使用 document.cookie.length > 1 而不是 document.cookie.length >= 1 - deamon
它在IE上无法工作。对于Chrome和Firefox,当禁用cookies时返回false,但在IE11的情况下,即使禁用了cookies,它也会返回true。请注意,请求帮助!!! - Trilok Pathak

7

cookieEnabled 属性返回一个布尔值,指示浏览器是否启用了 cookie。

<script>
if (navigator.cookieEnabled) {
    // Cookies are enabled
}
else {
    // Cookies are disabled
}
</script>

@Stephen 当在 IE10 模拟时,它似乎至少能在 IE7 中工作。你有任何来源吗? - Jonas Äppelgran
2
在我的经验中,从较新的IE版本模拟较旧的版本并不是非常可靠的。这只是委婉地说而已。此外,浏览器在“被询问”时有撒谎关于其功能的历史。实际测试一个功能通常是个好主意。 - Adrian Schmidt
navigator.cookieEnabled 在 IE11 中始终返回 true,是否有其他方法可以实现相同的功能? - Trilok Pathak

2
对于那些使用 jQuery Cookie 来管理和创建 cookie 的人,这里有一种简单的方法来检查 cookie,并在检查 cookie 后,根据启用或禁用 cookie 运行一个函数。
//Create Session Cookie
$.cookie('test-for-cookie', '1');

//Test for Session Cookie
var yesCookie = $.cookie('test-for-cookie');
if  (yesCookie == 1) { 
    //Run function if cookies are enabled.
} else{
    //If cookies are not enabled run this function.
} 

工作示例的 jsFiddle。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接