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

如何检测JavaScript和/或Cookie被禁用?,javascript,Javascript,如何检测用户浏览器中的JavaScript或Cookie被禁用并通知他 有什么帮助吗?有关检查Cookie的信息,您可以使用: function checkCookie(){ var cookieEnabled = navigator.cookieEnabled; if (!cookieEnabled){ document.cookie = "testcookie"; cookieEnabled = document.cookie.indexOf

如何检测用户浏览器中的JavaScript或Cookie被禁用并通知他
有什么帮助吗?

有关检查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,请使用
标记,标记中包含某种消息

尝试
..
标记,检查JavaScript是否启用


write(“如果启用JavaScript,将显示此文本”);
如果未启用JavaScript,将显示此文本

这是最简单的方法

if(navigator.cookieEnabled){
文件写入(“启用Cookies”);
}否则
{
文件写入(“未启用Oops Cookies”);
}
检查浏览器中是否启用了Cookies:

更新(2018年6月25日):

包括我在内的许多帖子都是从中摘录的。随着Modernizer代码的更新,它们最终都会过时

我认为这个问题最好的答案应该是直接使用现代化

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

原始答案(2017年5月11日):

这是直接从这篇文章中获得的,并且比其他解决方案在更多的浏览器中工作


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

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

此函数可以查看用户的错误消息,还可以停止脚本执行,并返回cookies状态

function IS_Cookies_Enabled(Show_Message, Stop_Script)
{
    if(Show_Message == undefined){
        Show_Message = true;
    }

    if(Stop_Script == undefined){
        Stop_Script = false;
    }


    var Cookie_Status = navigator.cookieEnabled;
    if (!Cookie_Status)
    { 
        document.cookie = "Test";
        Cookie_Status = document.cookie.indexOf("Test") != -1;
        // Delete test cookies
        document.cookie = "Test=1; expires=Thu, 01-Jan-1970 00:00:01 GMT";

    }

    if((!Cookie_Status) && (Show_Message))
    {
        document.getElementsByTagName('body')[0].innerHTML = "<div style='width: 600px; max-width: 100%; margin: 100px auto;'><h1 style='color: red'>Cookies Required</h1><p style='font-size: 18px;'>Cookies are not enabled on your browser. <br>Please enable cookies in your browser preferences to continue.</p><strong>Sylingo</strong>";
    }

    if((!Cookie_Status) && (Stop_Script))
    {
        throw new Error('Cookies is disabled');
    }
    return Cookie_Status;
}
以及检查JavaScript使用情况:

<noscript>
Javascript is not enabled on your browser. 
</noscript>

浏览器上未启用Javascript。

假设启用了JavaScript,这将告诉您是否启用了Cookie。在旧浏览器中工作

// returns 1 or 0 instead of true or false. Returns null if inconclusive.
function cookiesEnabled() {
    var i, j, cookies, found;
    if (navigator.cookieEnabled===false) return 0;
    document.cookie = 'testcookiesenabled=1';
    for (i=0; i<2; i++) {
        found = false;
        cookies = document.cookie.split(';');
        j = cookies.length;
        while(j--) {
            while (cookies[j].charAt(0)==' ') {// trim spaces
                cookies[j] = cookies[j].substring(1);
            }
            if (cookies[j].indexOf('testcookiesenabled=')==0) {
                found = true;
                break;
            }
        }
        if (!found) {
            return i;
        }
        // Delete test cookie.
        document.cookie = 'testcookiesenabled=; expires=Thu, 01 Jan 1970 00:00:01 GMT';
    }
    // Results inconclusive.
}
//返回1或0,而不是true或false。如果不确定,则返回null。
函数cookiesEnabled(){
变量i,j,cookies,发现;
if(navigator.cookieEnabled==false)返回0;
document.cookie='testcookiesenabled=1';

对于(i=0;i,此JavaScript函数一直适用于我:

if (typeof areCookiesAllowed !== 'function')
    {
        function areCookiesAllowed()
            {
                var cookies_allowed = navigator.cookieEnabled;

                if (!cookies_allowed)
                    {
                        try
                            {
                                var cur_dt = new Date();
                                var cur_tm = cur_dt.getTime();

                                document.cookie = 'cookie_test_' + cur_tm + '=1';
                                cookies_allowed = document.cookie.indexOf('cookie_test_' + cur_tm + '=') !== -1;
                                document.cookie = 'cookie_test_' + cur_tm + '=1; expires=Thu, 01-Jan-1970 00:00:01 GMT';
                            }
                        catch(err)
                            {
                                return false;
                            };
                    };

                return cookies_allowed;
            };
    };
if(允许的ArecookiesTypeof!=“函数”)
{
函数areCookiesAllowed()
{
var cookies_allowed=navigator.cookieEnabled;
如果(!cookies_允许)
{
尝试
{
var cur_dt=新日期();
var cur_tm=cur_dt.getTime();
document.cookie='cookie_test_'+cur_tm+'=1';
允许cookies=document.cookie.indexOf('cookie\u test'+cur\u tm+'=')!=-1;
document.cookie='cookie\u test'+cur\u tm+'=1;expires=1970年1月1日星期四00:00:01 GMT';
}
捕捉(错误)
{
返回false;
};
};
允许退货;
};
};
var result_elmt=document.getElementById(“结果”);
var结果;
如果(areCookiesAllowed()==真)
{
结果='祝贺您!此Web浏览器和此网站上已启用Cookie!';
}
其他的
{
结果='Aww Snap!不幸的是,此Web浏览器中未启用cookie或此网站上已禁用cookie';
};
result_elmt.innerHTML=结果;
警报(结果);

如果禁用了JavaScript,将如何运行脚本来检测它?打开JavaScript的脚本请注意,禁用JS时不会运行此脚本:)如果编写了testcookie,则应在之后将其删除。为什么要测试
typeof navigator.cookieEnabled==“undefined”
?navigator.cookieEnabled实际设置为false类型是否正确?如果IE的隐私选项设置为
High
,这将不起作用。在此模式下
navigator.cookieEnabled
true
文档。cookie
始终为空。最好的方法是删除checkCookie()的第一个测试:
函数checkCookie(){document.cookie=“testcookie”;var cookieEnabled=(document.cookie.indexOf(“testcookie”)!=-1)?true:false;return(cookieEnabled)?true:showcokiefail();}
无法在IE11中正确检测,您可以在此处进行测试:您的示例中的
是错误的。如果启用了JavaScript,则
中的文本不会显示为HTML,而是作为JavaScript程序执行。这个答案毫无意义。为什么要使用If(hasCookies())而不是If(navigator.cookieEnabled)?深度糖化层:)你的权利,这是一些JS 101。因此,我添加了第二个示例(可重用代码)。不管怎样,忘记客户端cookie;查看“window.localStorage”。这比@Noah Solomon的答案更为最新
<noscript>
Javascript is not enabled on your browser. 
</noscript>
// returns 1 or 0 instead of true or false. Returns null if inconclusive.
function cookiesEnabled() {
    var i, j, cookies, found;
    if (navigator.cookieEnabled===false) return 0;
    document.cookie = 'testcookiesenabled=1';
    for (i=0; i<2; i++) {
        found = false;
        cookies = document.cookie.split(';');
        j = cookies.length;
        while(j--) {
            while (cookies[j].charAt(0)==' ') {// trim spaces
                cookies[j] = cookies[j].substring(1);
            }
            if (cookies[j].indexOf('testcookiesenabled=')==0) {
                found = true;
                break;
            }
        }
        if (!found) {
            return i;
        }
        // Delete test cookie.
        document.cookie = 'testcookiesenabled=; expires=Thu, 01 Jan 1970 00:00:01 GMT';
    }
    // Results inconclusive.
}
<noscript>JavaScript is disabled. Please enabled JavaScript.</noscript>
if (typeof areCookiesAllowed !== 'function')
    {
        function areCookiesAllowed()
            {
                var cookies_allowed = navigator.cookieEnabled;

                if (!cookies_allowed)
                    {
                        try
                            {
                                var cur_dt = new Date();
                                var cur_tm = cur_dt.getTime();

                                document.cookie = 'cookie_test_' + cur_tm + '=1';
                                cookies_allowed = document.cookie.indexOf('cookie_test_' + cur_tm + '=') !== -1;
                                document.cookie = 'cookie_test_' + cur_tm + '=1; expires=Thu, 01-Jan-1970 00:00:01 GMT';
                            }
                        catch(err)
                            {
                                return false;
                            };
                    };

                return cookies_allowed;
            };
    };