如果在浏览器中禁用cookie,如何显示消息?

时间:2010-01-30 08:43:52

标签: javascript html xhtml cookies

如果在浏览器中禁用了Cookie,如何显示消息?像http://stackoverflow.com一样显示JavaScript是否被禁用。

4 个答案:

答案 0 :(得分:15)

曾经有一个JavaScript navigator.cookieEnabled界面,但今天浏览器的范围更广泛的Cookie控件而不仅仅是'启用'/'禁用',包括会话/持久选项,第一方/第三方,特定于站点的设置和P3P。所以嗅探这个属性现在用处不大。

不,找出是否可以设置cookie的唯一可靠方法是尝试设置它,看看它是否仍然存在。另一个问题是,当用户的隐私控制不允许时,许多浏览器会将持久cookie降级为会话cookie,IE不会。

如果您在禁用IE时尝试在IE中设置持久cookie,那么cookie将被简单地扔在地板上。如果你使用一个简单的会话cookie检查器,找到cookie,然后尝试设置一个持久cookie,这可能会让你失望。并且您无法逃避尝试将会话cookie设置为持久性cookie,因为当您在IE中设置持久性cookie且禁用持久性cookie时,它甚至会删除同名的现有会话cookie。哦IE!

因此,如果你需要设置一个持久性cookie,但是在没有持久性的会话中使用它,你必须首先使用它来找出你可以做的事情:

// Find out what cookies are supported. Returns:
// null - no cookies
// false - only session cookies are allowed
// true - session cookies and persistent cookies are allowed
// (though the persistent cookies might not actually be persistent, if the user has set
// them to expire on browser exit)
//
function getCookieSupport() {
    var persist= true;
    do {
        var c= 'gCStest='+Math.floor(Math.random()*100000000);
        document.cookie= persist? c+';expires=Tue, 01-Jan-2030 00:00:00 GMT' : c;
        if (document.cookie.indexOf(c)!==-1) {
            document.cookie= c+';expires=Sat, 01-Jan-2000 00:00:00 GMT';
            return persist;
        }
    } while (!(persist= !persist));
    return null;
}

答案 1 :(得分:12)

试试这个:

function are_cookies_enabled()
{
    var cookieEnabled = (navigator.cookieEnabled) ? true : false;

    if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled)
    { 
        document.cookie="testcookie";
        cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false;
    }
    return (cookieEnabled);
}

答案 2 :(得分:1)

如果禁用JavaScript,stackoverflow.com会使用<noscript>标记来显示特殊页面。对于内置于该语言中的cookie,没有任何等价物。你最好的选择可能是this thread看看如何检测cookie是否被禁用。

答案 3 :(得分:-1)

首先测试是否启用了Cookie。如果是,则输出消息。您可以使用CSS隐藏消息,然后在测试后取消隐藏,但如果用户不使用CSS,则会看到它。您可以拥有该元素,但内部没有任何内容,因此它不会显示,然后用户innerHTML在测试后输入消息。

假设已经设置(或尝试使用)cookie:

    var cookieMessage = "You don't have cookies turned on!";
    var cookieHTML = document.getElementById("cookiesOff");
    function cookieMessage() {
    if(document.cookie.length == 0) {
          cookieHTML.innerHTML(cookieMessage);
          }
     }

然后有一个HTML元素,如h3p,ID为cookiesOff