Как показать сообщение только в том случае, если файлы cookie отключены в браузере? например /qaru.site/... показать, отключен ли JavaScript.
Как показать сообщение только в том случае, если файлы cookie отключены в браузере?
Ответ 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
.