#javascript #web-applications #html #local-storage #webos
#javascript #веб-приложения #HTML #локальное хранилище #webos
Вопрос:
У меня есть веб-приложение HTML5, в котором я использую localStorage для сохранения некоторых пользовательских настроек на стороне клиента между использованием. Я думал, что у меня все работает хорошо, но недавно обнаружил, что в браузере WebOS элементы localStorage удаляются после полного закрытия браузера (все карточки, а не только моя страница). Он действует так, как будто он сохраняется в хранилище сеанса, но это не так. Вот минимальный пример, иллюстрирующий мою проблему:
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<meta charset="utf-8" />
<meta name="apple-mobile-web-app-capable" content="yes">
<script type="text/javascript" src="js/jquery.min.js"></script>
<script>
$(function() {
$('#btnV').click(function() {
var x = '';
for(var i = 0; i < localStorage.length; i ) {
x = localStorage.key(i) ':' localStorage.getItem(localStorage.key(i)) '<br/>';
}
$('#lbl').empty().append(x);
});
$('#btnS').click(function() {
localStorage.setItem('test', 'blah');
});
});
</script>
</head>
<body>
<span id="lbl"></span>
<input type="button" id="btnS" value="Save" />
<input type="button" id="btnV" value="View" />
</body>
</html>
Когда я впервые загружаю страницу и нажимаю кнопку «Просмотреть», ничего не отображается. Если я нажму «Сохранить», а затем «Просмотреть», я увижу элемент как сохраненный. Обновление страницы и нажатие кнопки Просмотреть сразу показывает, что значение сохраняется при перезагрузке страницы. Однако, если я полностью закрою браузер, а затем вернусь на страницу, «Просмотр» не покажет значений, как это было в самый первый раз. Я неправильно настраиваю элементы localStorage или мой браузер WebOS каким-то образом настроен для этого? Я не смог найти ничего подходящего в настройках.
Спасибо…
Комментарии:
1. Хотел бы я помочь, но ваш код выглядит нормально, поэтому я предполагаю, что это проблема с WebOS (у меня нет устройства palm при себе)
2. Происходит ли это в эмуляторе? На устройстве? Какая версия операционной системы? У меня в эмуляторе есть пара разных устройств и версий ОС, поэтому я попытаюсь взглянуть на это чуть позже и посмотреть, где это повторяется.
3. @GordonWorley @Gordon Worley : Да, это происходит как на эмуляторе (1.4.5 SDK), так и на устройстве (Palm Pre Plus, также 1.4.5). Это все, на чем мне нужно протестировать
Ответ №1:
Насколько я знаю, localStorage не поддерживается в WebOS 1.4.x. Кажется, я помню, что видел его в списке как функцию, которая была включена в WebOS 2.0 (или, возможно, 2.1), но я не могу найти никакой документации по этому вопросу, так что, возможно, я неправильно помню.
Предполагая, что вы храните небольшой объем данных, пользовательские настройки обычно более уместно хранить в файлах cookie в WebOS с помощью Mojo.Модель.Файл cookie.
В моем собственном приложении я использую файлы cookie для пользовательских настроек и храню данные приложения в базе данных базы данных HTML5, а мой класс базы данных с открытым исходным кодом упрощает доступ к базе данных HTML5.
Комментарии:
1. Спасибо. По-видимому, это так… Я только нахожу странным, что 1.4.x поддерживает это, просто оно не сохраняется. Вероятно, я пойду по пути использования файлов cookie — спасибо за предложение!