|
зацикивются cookies в IE
Ума не приложу почему.
Корзина интернет магазина сохраняет id и количества товаров в кукисах браузера. Везде все отлично, кроме ослика - сначала работал, но с некоторых пор он просто игнорирует setCookie чем вводит меня в ступор. Выглядит так, будто его зацикливает на конкретном значении, то есть устанавливаешь новое значение, делаешь гет - возвращается старое( Если очистить кукисы вручную, то он снова начинает работать исправно, но, через некоторое время, вновь берется за старое. Я не сталкивался, но по-моему это похоже на превышение 4кб лимита, но я то пытаюсь сохранить всего 20-30 символов. С чем еще может быть связано подобное поведение ИЕ? Прошу, развейте эту магию! Как сохраняю и читаю куки (тестовый документ, на котором я надеялся ловить баг. Используется библиотечка с вашего сайта, из "10 лучших..."):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Cookie test</title>
<script type="text/javascript">
function getCookie(name) {
var matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
))
return matches ? decodeURIComponent(matches[1]) : ''
}
// у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 })
}
</script>
</head>
<body>
<script>
alert('Cookies test 2')
setCookie ('SSCart', '', {expires:120})
while (confirm('test = ' + getCookie('SSCart')))
{
setCookie ('SSCart', getCookie('SSCart') + '---------0', {expires:120})
}
</script>
</body>
</html>
PS: проблема не только на моем ИЕ, другие тоже ее видят! я не псих!!!1 |
Цитата:
уберите все эти закорючки и все запуститься |
Matre, это регулярное выражение (RegExp)
|
регулярные выражения??
вы случайно не троль? несете какуюто ахинею. реги я видел в perl, в malbolge и в php но в java script их нет! если я ва с неубедил то почему не раьотает код: print $my =~ s/123/456/g; ну? |
Чувак, во первых malbolge эзотерический язык программирования, там нет регулярок, во вторых вот тебе реги в js, а не сработает приведённый код в js, потому что это код Perl.
P.s. Вот это на malbolge не регулярка: Цитата:
|
Цитата:
Цитата:
Цитата:
|
Matre,
слишком толсто. в JS есть регулярные выражения. |
Цитата:
вы весь вечер несете откровенную ахинею и ничего еще не аргументировали! пркажите мне реги в js и я замолчу |
Против троллей эффективнее бана только игнор. Не обращайте внимания, профессор)
Вчера появился некоторый прогресс в моей проблеме: я начал удалять куку перед записью, т.е. вызывать deleteCookie(name) в начале функции setCookie. Полный бред, конечно, и танцы с бубном, но и сама проблема мистична, да и результат есть - в некоторых билдах ослика все стало работать как надо. Но в восьмом ie все же иногда проскальзывает эта трабла, а у заказчика как на зло именно этот браузер. Быть может есть мысли, из-за чего это может быть хотя бы теоретически? Ума не приложу что происходит, я уже всеми известными проклятиями обругал мелкософт, скоро свои придумывать начну... |
Цитата:
http://javascript.ru/forum/css-html-...html#post86691 |
| Часовой пояс GMT +3, время: 02:33. |
|