Как показать сообщение только в том случае, если файлы cookie отключены в браузере?

Как показать сообщение только в том случае, если файлы cookie отключены в браузере? например /qaru.site/... показать, отключен ли JavaScript.

Ответ 1

Раньше был интерфейс JavaScript navigator.cookieEnabled, но сегодня браузеры имеют гораздо более широкий диапазон элементов управления cookie, чем просто отключенный/отключенный, включая параметры сеанса/постоянные, сторонние/сторонние, специфичные для сайта настройки и P3P. Так что, обнюхивая это свойство, сейчас мало пользы.

Нет, единственный надежный способ узнать, можно ли настроить cookie, - попытаться установить его и посмотреть, все ли он там. Другая морщина заключается в том, что, хотя многие браузеры будут понижать постоянный файл cookie до cookie сеанса, когда пользовательские средства контроля конфиденциальности не разрешают их, IE не будет.

Если вы пытаетесь установить постоянный файл cookie в IE, когда они отключены, cookie будет просто выброшен на пол. Это может вас поймать, если вы используете простой сеансовый cookie checker, найдите файлы cookie, а затем попытайтесь установить постоянный файл cookie. И вы не можете уйти с попыткой установить в качестве cookie сеанса и постоянный файл cookie, потому что, когда вы устанавливаете постоянный файл cookie в IE с отключенными постоянными куками, он даже удалит существующий файл cookie сеанса с тем же именем. Oh IE!

Итак, если вам нужно установить постоянный файл cookie, но сделать с сеансом, где постоянный недоступен, вам придется сначала использовать это, чтобы узнать, что вам разрешено делать:

// Find out what cookies are supported. Returns:
// null - no cookies
// false - only session cookies are allowed
// true - session cookies and persistent cookies are allowed
// (though the persistent cookies might not actually be persistent, if the user has set
// them to expire on browser exit)
//
function getCookieSupport() {
    var persist= true;
    do {
        var c= 'gCStest='+Math.floor(Math.random()*100000000);
        document.cookie= persist? c+';expires=Tue, 01-Jan-2030 00:00:00 GMT' : c;
        if (document.cookie.indexOf(c)!==-1) {
            document.cookie= c+';expires=Sat, 01-Jan-2000 00:00:00 GMT';
            return persist;
        }
    } while (!(persist= !persist));
    return null;
}

Ответ 2

Попробуйте следующее:

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

Ответ 3

stackoverflow.com использует теги <noscript> для отображения специальной страницы, если JavaScript отключен. Там ничего не эквивалентно куки, которые встроены в язык. Лучше всего, наверное, взглянуть на этот поток о том, как определить, отключены ли файлы cookie.

Ответ 4

Сначала вы проверяете, разрешены ли файлы cookie. Если они есть, вы выводите сообщение. Вы можете скрыть сообщение с помощью CSS, а затем показать после теста, но тогда пользователь увидит его, если они не будут использовать CSS. У вас может быть элемент, но внутри ничего нет, поэтому он не будет отображаться, а затем пользователь innerHTML, чтобы ввести сообщение после теста.

Предполагая, что файлы cookie уже установлены (или попытались), используйте:

    var cookieMessage = "You don't have cookies turned on!";
    var cookieHTML = document.getElementById("cookiesOff");
    function cookieMessage() {
    if(document.cookie.length == 0) {
          cookieHTML.innerHTML(cookieMessage);
          }
     }

И затем создайте HTML-элемент, например, h3 или p с идентификатором cookiesOff.