JQuery обнаружение файлов cookie

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

Ответ 1

Вам не нужен 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

Ответ 2

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 || /*@[email protected]*/false))
    {
        document.cookie = "testcookie=1";

        if (!document.cookie) {
            return false;
        } else {
            document.cookie = "testcookie=; expires=" + new Date(0).toUTCString();
        }
    }

    return true;
}

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

Почему вы тестируете свойство 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;
    }

Ответ 6

Вы можете просто установить test_cookie при загрузке своей страницы. затем удалите, если он установлен, else alert ('включите файлы 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>