我有一个基于jQuery的网络应用程序。我的要求非常简单:我想使用jQuery来确定用户是否在其Web浏览器中启用或禁用了cookie。我知道有一个可用的插件可用于创建/检索/删除/更新cookie。但是,有没有一种方法可以检测用户代理的设置?
答案 0 :(得分:39)
你不需要jQuery,你可以使用vanilla Javascript:
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);
}
答案 1 :(得分:6)
Internet Explorer(至少版本10)始终为navigator.cookieEnabled
返回true。以下是解决此问题的方法:
function areCookiesEnabled() {
var cookieEnabled = navigator.cookieEnabled;
// When cookieEnabled flag is present and false then cookies are disabled.
if (cookieEnabled === false) {
return false;
}
// try to set a test cookie if we can't see any cookies and we're using
// either a browser that doesn't support navigator.cookieEnabled
// or IE (which always returns true for navigator.cookieEnabled)
if (!document.cookie && (cookieEnabled === null || /*@cc_on!@*/false))
{
document.cookie = "testcookie=1";
if (!document.cookie) {
return false;
} else {
document.cookie = "testcookie=; expires=" + new Date(0).toUTCString();
}
}
return true;
}
答案 2 :(得分:4)
最简单的方法是检查包含浏览器信息的navigator
属性。 Reference
您可以使用navigator.cookieEnabled === true
来检测浏览器对Cookie的支持。
答案 3 :(得分:2)
我喜欢这个1班轮功能:
function cookiesEnabled() {
return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid';
}
答案 4 :(得分:0)
为什么要使用属性cookieEnabled
进行测试?只是尝试创建一个cookie并检查它是否已完成。如果cookie有效,请删除测试创建的cookie。
function are_cookies_enabled()
{
document.cookie="testcookie=valid";
cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false;
if(cookieEnabled){
document.cookie = "testcookie=; expires=Thu, 01 Jan 1970 00:00:00 UTC;";
}
return cookieEnabled;
}
答案 5 :(得分:-1)
您可以在加载页面时设置test_cookie。如果设置则删除,否则提醒('请启用cookie ...');
<script>
jQuery(document).ready(function()
{
var TEST_COOKIE = 'test_cookie';
jQuery.cookie( TEST_COOKIE, true );
if ( jQuery.cookie ( TEST_COOKIE ) )
{
jQuery.cookie( TEST_COOKIE, null ); // delete the cookie
alert( 'Good news, cookies are enabled.' );
}
else
{
alert( 'Cookies not enabled. Please enable and try again.' );
}
}
</script>