jQuery检测cookie已启用

时间:2011-11-13 15:37:31

标签: jquery cookies

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

6 个答案:

答案 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);
}

http://sveinbjorn.org/cookiecheck

答案 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>