【问题标题】:How to find that browser's cookies are enable or disabled?如何找到浏览器的 cookie 是启用还是禁用?
【发布时间】:2016-08-06 00:23:18
【问题描述】:

我试图发现 cookie 是通过 javascript 启用或禁用的。

详细说明

我在 javascript 中创建了如下函数:

  if (navigator.cookieEnabled != true) {
               alert("Cookies are not enabled, Please enable cookies to continue logging in ProjectName");
            }

我已经把函数放在了页面正文的onload中。请注意,此功能适用于 chrome 和 Firefox。

但它不适用于 IE11,原因是 navigator.cookieEnabled 始终返回 true,即使 cookie 被禁用或阻止所以请建议其他方式或添加评论以使其正确. 也使用了 document.cookies.length,但即使 cookie 被禁用,它也会返回 true。

【问题讨论】:

  • 您是否愿意使用库 - 如果是,modernizr.com 已经对此进行了检查(检查 modernizr.com/docs 中的 cookie)
  • @TrilokPathak 根据您在此处发布的代码,您没有尝试他们提供的任何解决方案
  • @smnbbrv 是的,Josh Schultz 和 Sarfraz 的评论也完成了所有这些,但对我来说并没有发生,让我告诉你问题出在哪里。在 IE 中 navigator.cookieEnabled 总是返回 true。因此,在开发人员的评论中,尽管 cookie 被禁用,但它总是返回 true。

标签: javascript internet-explorer cookies


【解决方案1】:

如果您不想使用库,则可以使用库中的相关位,就像这样(来自https://github.com/Modernizr/Modernizr/blob/74655c45ad2cd05c002e4802cdd74cba70310f08/feature-detects/cookies.js

function supportsCookies() {
    try {
      // Create cookie
      document.cookie = 'cookietest=1';
      var ret = document.cookie.indexOf('cookietest=') != -1;
      // Delete cookie
      document.cookie = 'cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT';
      return ret;
    }
    catch (e) {
      return false;
    }
}

【讨论】:

  • 这里对于 ie 和 chrome 来说是 ret 是真的 tha 是什么意思?
  • true 表示支持 cookie。因此,如果您对 IE 和 Chrome 有所了解,则意味着您的 IE 和 Chrome 配置支持 cookie。
  • 在 IE 中,cookie 被禁用,但代码仍然返回 true 我想要的是我想通过 javascript 找到设置 cookie 是否启用的浏览器。请注意。
  • hm.. 这不应该发生,因为脚本实际上保存了一个 cookie 并检索它。请问您为什么认为 IE 中禁用了 cookie?有没有失败的脚本?
  • 是的,请看我写的上面的脚本,它不适用于 IE11,我也知道原因,所以如果你有任何其他方法或额外的评论来解决问题,它会很大救命!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-12
  • 2023-01-20
  • 2010-11-10
  • 1970-01-01
  • 2019-11-08
  • 1970-01-01
  • 2018-11-27
相关资源
最近更新 更多