Как определить наличие cookie в бета-версии Safari 4 - PullRequest
1 голос
/ 04 июня 2009

Safari 4 Beta в Windows (сборка 528.17) содержит ошибку. Если expires в значении, присвоенном document.cookie, cookie не изменяется. Таким образом, нижеприведенное cookie больше не работает.

var dt = new Date();
dt.setSeconds(dt.getSeconds() + 2);

document.cookie = "cookietest=1; expires=" + dt.toGMTString();
var cookiesEnabled = document.cookie.indexOf("cookietest=") != -1;

Если я просто удаляю expires , это работает. Однако он оставит фиктивный файл cookie «cookietest = 1» во всем сеансе.

Я пытался работать в document.cookie напрямую, чтобы удалить cookie, но, похоже, нет способа сделать это. Единственный способ «удалить» файл cookie - установить срок его действия.

Есть ли обходной путь для этого?

UPDATE: В бета-версии Safari 4 для Windows есть ошибка. если срок действия истекает с этого момента не более 1 часа (3600 секунд), назначение document.cookie завершится неудачей.

Мы можем удалить cookie после обнаружения.

var dt = new Date();
dt.setSeconds(dt.getSeconds() + 2);

document.cookie = "cookietest=1";
var cookiesEnabled = document.cookie.indexOf("cookietest=") != -1;

document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT";

Ответы [ 2 ]

1 голос
/ 04 июня 2009

я. Ошибка не имеет ничего общего с сборкой сафари. Проблема с датой, которую вы устанавливаете. Когда вы используете dt.SetSeconds (dt.getSeconds () + 2), вы устанавливаете время истечения срока действия cookie на currenttime + 2 секунды. Таким образом, к моменту загрузки страницы и проверки файла cookie срок его действия истекает.

II. Увеличьте время более чем на минуту (60) и проверьте, оно будет работать.

Ramjee

0 голосов
/ 19 августа 2009

Это правда - есть проблема с «недолговечными» куки в Safari (по крайней мере, в Windows) Если срок действия файла cookie истекает менее чем через 60 минут - он истекает немедленно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...