HTML5 на iPhone Safari - данные, хранящиеся в localStorage, не всегда сохраняются. Зачем?
Я пишу простое веб-приложение iPhone, используя HTML5 localStorage.
Тесты на устройстве 2G показывают, что данные, хранящиеся с использованием localStorage, не сохраняются после того, как процесс Safari был убит, хотя открытые окна Safari запоминаются.
Данные также теряются в случае, когда я нахожусь на другом сайте в другом окне Safari, затем я изменяю окно, в котором отображается веб-приложение в теме. Когда Safari загружает страницу, она автоматически обновляет страницу. Затем данные теряются.
Это простой тестовый код:
<html>
<head>
<meta name="viewport" content="height=device-height, width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
</head>
<body>
<script>
alert("1:" + localStorage.getItem("test"));
localStorage.setItem("test", "123");
alert("2:" + localStorage.getItem("test"));
</script>
</body>
Насколько я понимаю, данные должны сохраняться!
Может ли кто-нибудь пролить свет на это поведение? Что я должен сделать, чтобы заставить упорство работать?
Спасибо!
Том.
Ответы
Ответ 1
Согласно Apple (http://developer.apple.com/safari/library/documentation/iphone/conceptual/safarijsdatabaseguide/Name-ValueStorage/Name-ValueStorage.html#//apple_ref/doc/uid/TP40007256-CH6-SW3), поддержка LocalStorage была добавлена в Safari 4.0.
Согласно Wikipedia (http://en.wikipedia.org/wiki/Safari_version_history), Safari 4.0 был добавлен в iPhone OS 3.0.
2G iPhones не поставлялись с предустановленной ОС 3.0 или более поздней. Версия вашей iPhoone OS, скорее всего, слишком стар.
Ответ 2
Я думаю, что есть ошибка с локальным хранилищем в iPhone Safari. У меня есть аналогичная проблема:
http://groups.google.com/group/phonegap/browse_thread/thread/746868e928aaba5c
Ответ 3
Я попробовал свой код на iPhone 3G и Safari в Windows, и он работает. Может быть, вы используете более старую версию Safari на вашем iPhone?