jQuery检测cookie启用

我有一个基于jQuery的网络应用程序。 我的要求很简单:我想使用jQuery来查明用户是否在其Web浏览器中启用或禁用了cookie。 我知道有一个可用的插件可用于创建/检索/删除/更新cookie。 但是,jQuery有没有办法检测用户代理的设置?

你不需要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); } 

http://sveinbjorn.org/cookiecheck

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

最简单的方法是检查navigator器的属性,其中包含浏览器的信息。 参考

您可以使用navigator.cookieEnabled === true来检测浏览器对cookie的支持。

我喜欢这个1class轮function:

 function cookiesEnabled() { return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid'; } 

为什么要使用属性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; } 

您只需在加载页面时设置test_cookie即可。 如果设置则删除,否则提醒(’请启用cookie …’);