У меня есть веб-приложение на основе jQuery. Мое требование довольно просто: я хочу использовать jQuery, чтобы узнать, включил ли пользователь или отключил куки в своем веб-браузере. Я знаю, что есть плагин, который можно использовать для создания/извлечения/удаления/обновления cookie. Но существует ли способ, с помощью которого jQuery может обнаруживать настройки пользовательского агента?
JQuery обнаружение файлов cookie
Ответ 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);
}
Ответ 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>