如何检测 JavaScript 和/或 Cookie 是否被禁用?

IT技术 javascript
2021-03-09 07:18:00

如何检测用户浏览器中的 JavaScript 或 Cookies 是否被禁用并通知他任何帮助?

6个回答

要检查 cookie,您可以使用:

function checkCookie(){
    var cookieEnabled = navigator.cookieEnabled;
    if (!cookieEnabled){ 
        document.cookie = "testcookie";
        cookieEnabled = document.cookie.indexOf("testcookie")!=-1;
    }
    return cookieEnabled || showCookieFail();
}

function showCookieFail(){
  // do something here
}


// within a window load,dom ready or something like that place your:
checkCookie();

并且为了检查 JavaScript 使用<noscript>带有某种消息标签

为什么要测试typeof navigator.cookieEnabled=="undefined"将 navigator.cookieEnabled 实际上设置为 false 类型是否正确?
2021-04-21 07:18:00
请注意,当 JS 被禁用时,这不会运行:)
2021-04-30 07:18:00
如果编写了 testcookie,则应在之后将其删除。
2021-05-02 07:18:00
这不适用于隐私选项设置为 的 IE High在这种模式下navigator.cookieEnabledtruedocument.cookie总是空的。最好是去掉 checkCookie() 的第一个测试:function checkCookie(){document.cookie="testcookie"; var cookieEnabled=(document.cookie.indexOf("testcookie")!=-1)? true : false; return (cookieEnabled)?true:showCookieFail(); }
2021-05-07 07:18:00
无法在 IE11 中正确检测,您可以在这里测试:sveinbjorn.org/cookiecheck
2021-05-12 07:18:00

更新 (6/25/18):

很多这样的帖子,包括我的,都是从Modernizr中提取的片段随着 Modernizr 代码的更新,它们最终都会过时。

我认为这个问题的最佳答案应该是直接使用 Modernizr。

if (Modernizr.cookies) {
  // supported
} else {
  // not-supported
}

原始答案 (5/11/17):

这直接取自Modernizr,与本文中的其他解决方案相比,它适用于更多浏览器。

https://github.com/Modernizr/Modernizr/commit/33f00fbbeb12e92bf24711ea386e722cce6f60cc

function checkCookie(){
    // Quick test if browser has cookieEnabled host property
    if (navigator.cookieEnabled) return true;
    // 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;
}

由于 cookie 检测在 IE 11 中不起作用,我建议使用 Modernizr 方法:

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

https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cookies.js

这比@Noah Solomon 的回答更新
2021-04-27 07:18:00

这是最简单的方法

if (navigator.cookieEnabled) {
document.write("Cookies Enabled");
} else 
{
document.write("Oops Cookies Not Enabled");
}
Check if Cookies Enabled in Your Browser:  
<br />

// Example[1]: if ( hasCookies() )
/**
* @hasCookies:  Check if cookie's are Enabled
* @param  {none} ''
* @return {BOOLEAN} true|false
*/
function hasCookies() {
return (navigator.cookieEnabled);
}

 // Example[2]: if ( JLS.TEST.COOKIE() )
// Java Pattern ( How to write usable JS)
/** @namespace JLS classes and functions. */
var JLS = JLS || {};
/**
* TEST utility
* @namespace JLS
* @class TEST
*/
JLS.TEST = {

/**
* @public-method COOKIE
* @COOKIE  Check if cookie's are Enabled
* @return {BOOLEAN} true|false
*/
 COOKIE: function () {
    //Change this (library). Not main.js (Algorithm)
    return (navigator.cookieEnabled);
    }
};
深糖层:)
2021-04-29 07:18:00
这个答案是废话。为什么要使用 if ( hasCookies() ) 而不是 if ( navigator.cookieEnabled ) ?
2021-05-02 07:18:00
你的权利,那是一些 JS 101。所以,我添加了第二个例子(可重用的代码)。无论如何都忘记客户端 cookie;查看“window.localStorage”。
2021-05-14 07:18:00