Я застрял с этой странной проблемой в Safari. Я сохраняю данные о выборе пользователя в куки, используя javascript.
Я создаю куки, используя следующий код -
document.cookie = cookieName +
"=" + encodeURIComponent(cookieValue) +
"; expires=" + jsDate.toGMTString();
и его чтение с использованием -
var cookie = document.cookie;
if(cookie.length !== 0){
var theCookie=" "+document.cookie;
var ind=theCookie.indexOf(" "+cookieName+"=");
if (ind==-1) ind=theCookie.indexOf(";"+cookieName+"=");
if (ind==-1 || cookieName=="") return "";
var ind1=theCookie.indexOf(";",ind+1);
if (ind1==-1) ind1=theCookie.length;
return unescape(theCookie.substring(ind+cookieName.length+2,ind1));}
else { return '';}
Этот код отлично работает в Firefox и IE, но когда я получаю доступ к данным этого cookie в Safari - возвращается пустая строка. Странная вещь, если я ПОВТОРЯЮ свой выбор и пытаюсь снова, я могу получить доступ к данным. Другими словами, при первом доступе к моему сайту данные cookie недоступны, но при последующих попытках данные доступны!
Чтобы снова увидеть эту проблему, мне нужно очистить кеш, историю Safari и удалить файлы cookie из раздела «Показать файлы cookie» и снова открыть браузер.
Еще одно наблюдение - когда мне не удается прочитать данные cookie, мы можем увидеть cookie, когда смотрим в Safari> «Настройки»> «Безопасность»> «Показать cookie»
пс:
столкнувшись с этим с Safari версии 4 и 5