Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Определить, принимает ли ИЕ cookie (https://javascript.ru/forum/css-html-internet-explorer/11347-opredelit-prinimaet-li-ie-cookie.html)

mikel 19.08.2010 11:05

Определить, принимает ли ИЕ cookie
 
Классическая задача: Определить, принимает ли браузер cookie, если не принимает - вывести предупреждение. Гуглил, большинство решений на js упираются в navigator.cookieEnabled или во что-нибудь другое, но ни одно не хочет работать в ИЕ:(

Подскажите, плз, для ИЕ данная задача как-нибудь решается?

Gvozd 19.08.2010 11:12

// возвращает cookie если есть или undefined
function getCookie(name) {
	var matches = document.cookie.match(new RegExp(
	  "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
	))
	return matches ? decodeURIComponent(matches[1]) : undefined 
}

// уcтанавливает cookie
function setCookie(name, value, props) {
	props = props || {}
	var exp = props.expires
	if (typeof exp == "number" && exp) {
		var d = new Date()
		d.setTime(d.getTime() + exp*1000)
		exp = props.expires = d
	}
	if(exp && exp.toUTCString) { props.expires = exp.toUTCString() }

	value = encodeURIComponent(value)
	var updatedCookie = name + "=" + value
	for(var propName in props){
		updatedCookie += "; " + propName
		var propValue = props[propName]
		if(propValue !== true){ updatedCookie += "=" + propValue }
	}
	document.cookie = updatedCookie

}

// удаляет cookie
function deleteCookie(name) {
	setCookie(name, null, { expires: -1 })
}
var rand=Math.random();
setCookie('test',rand) 
alert(rand+' '+getCookie('test'));
if(getCookie('test')==rand){
alert('OK');
} else{
alert('not');
}

очевидно же!

mikel 19.08.2010 11:28

Gvozd
Спасибо, но здесь та же самая проблема, что и у всех прочих скриптов, которые пробовал: В ИЕ при отключенных cookie возвращает OK.

Отключал в настройках ИЕ->Свойства обозревателя:чекбокс "Перекрывать автоматическую обработку файлов cookie" + Блокировать основные + Блокировать сторонние cookie. Сессии в куках тож не сохраняются, так что куки точно отключены. Есть еще варианты?

Gvozd 19.08.2010 11:45

Цитата:

Сообщение от mikel
В ИЕ при отключенных cookie возвращает OK.

неправда. у меня все прекрасно возвращает not
вы с хоста работаете, или из файловой системы?
наверняка же прям из проводника запускаете.=)
IE какой версии?

mikel 19.08.2010 12:00

ИЕ 8.
Запускаю с localhost (IIS)
Впрочем, есть способ проверить - выложить код прямо на сайт и посмотреть, будет ли работать там.

Ради интереса запустил тестовую страничку на Denwer - тоже самое. Может у меня ИЕ какой-то не такой

Gvozd 19.08.2010 12:24

Цитата:

Сообщение от mikel
ИЕ 8.
Запускаю с localhost (IIS)

думаю ему домен не нравится.
у меня с локальной машины, с домена, отличного от Localhost все отлично работает
залейте на сайт

mikel 19.08.2010 13:32

Да, действительно все уперлось в домен, на внешнем все работает, спасибо.


Часовой пояс GMT +3, время: 10:54.