jQuery обнаружение куки включены - PullRequest
20 голосов
/ 13 ноября 2011

У меня есть веб-приложение на основе jQuery.Мое требование довольно простое: я хочу использовать jQuery, чтобы узнать, включил или отключил пользователь куки в своем веб-браузере.Я знаю, что есть плагин, который можно использовать для создания / получения / удаления / обновления куки.Но есть ли способ, которым jQuery может определить настройки агента пользователя?

Ответы [ 6 ]

39 голосов
/ 13 ноября 2011

Для этого вам не нужен jQuery, вы можете использовать ванильный 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

6 голосов
/ 08 августа 2013

Internet Explorer (по крайней мере, версия 10) всегда возвращает true для navigator.cookieEnabled. Вот способ обойти это:

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;
}
4 голосов
/ 13 ноября 2011

Самый простой способ - проверить свойство navigator, которое содержит информацию браузера. Ссылка

Вы можете использовать navigator.cookieEnabled === true для определения поддержки cookie в браузере.

2 голосов
/ 30 июля 2014

Мне нравится эта 1 функция лайнера:

function cookiesEnabled() {
    return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid';
}
0 голосов
/ 08 июня 2017

Почему вы тестируете со свойством cookieEnabled?просто попробуйте создать куки и проверить, если это сделано.И в случае, если 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;
    }
0 голосов
/ 31 января 2014

Вы можете просто установить test_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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...