javascript - 如何仅在浏览器中禁用 cookie 时才显示消息?

标签 javascript html xhtml cookies

<分区>

如何仅在浏览器中禁用 cookie 时才显示消息?喜欢http://stackoverflow.com显示 JavaScript 是否被禁用。

最佳答案

过去有一个 JavaScript navigator.cookieEnabled 界面,但如今浏览器的 cookie 控制范围比“启用”/“禁用”范围,包括 session /持久选项、第一方/第三方、站点特定设置和 P3P。所以嗅探这个属性现在用处不大。

不,确定您是否可以设置 cookie 的唯一可靠方法是尝试设置它,并查看它是否仍然存在。另一个问题是,虽然许多浏览器会在用户的隐私控制不允许时将持久性 cookie 降级为 session cookie,但 IE 不会。

如果您在 IE 禁用时尝试在 IE 中设置持久性 cookie,该 cookie 将被简单地扔到地板上。如果您使用一个简单的 session cookie 检查器,发现 cookie 已启用,然后尝试设置一个持久性 cookie,这可能会让您出局。并且您不能尝试将持久性 cookie 设置为 session cookie,因为当您在禁用持久性 cookie 的 IE 中设置持久性 cookie 时,它​​甚至会删除 em> 同名的现有 session cookie。哦,IE!

因此,如果您需要设置持久性 cookie,但在持久性不可用的情况下使用 session ,则必须首先使用它来找出允许您做什么:

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

关于javascript - 如何仅在浏览器中禁用 cookie 时才显示消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2167310/

相关文章:

eclipse - 动态 Web 应用程序、Eclipse、JSF 中的异常 java.lang.NoClassDefFoundError

javascript - 旋转多边形检测并使直线遵循边界

javascript - javascript 函数中的 () 和 {} 有什么区别?

jquery 不会将元素附加到页面

javascript - 如何使用 JavaScript 更改 <a> 标签中的 title 属性?

javascript - 如何在点击日历图标时弹出日历?

javascript - 超链接不适用于 Angular-fullstack yo 生成器

javascript - 删除线功能

xml - 您如何使用 XSL 转换和 XML 按属性值访问元素?

css - 这可以在 CSS 中工作吗?