<分区>
如何仅在浏览器中禁用 cookie 时才显示消息?喜欢http://stackoverflow.com显示 JavaScript 是否被禁用。
<分区>
如何仅在浏览器中禁用 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/