WebOS сбрасывает localStorage при закрытии браузера?

#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 — спасибо за предложение!