2016-04-16 3 views
1

У меня есть сайт, который сохраняет строковый объект JavaScript в sessionStorage. Он хорошо работает на настольных браузерах - данные сохраняются при перезагрузке страниц, как описано в MDN.sessionStorage неожиданно отключен на Android

На телефонах Android нередко перезагружается вкладка, когда пользователь переключается с другой вкладки или когда браузер возвращается с фона на передний план, и я ожидаю, что sessionStorage будет сохраняться. Это, однако, не так. SessionStorage пропал без вести, как будто создается новый сеанс.

Я подумал об использовании localStorage вместо этого, который не истечет, даже если сессия закрыта. На самом деле это не разобрано во всех моих проблемах, поскольку, как я полагаю, пользователь может открывать его несколько раз на нескольких вкладках и делать разные вещи на каждом из них.

Так что мои вопросы:

  1. Является ли поведение sessionStorage описано выше, как ожидалось? Если нет, что я могу сделать, чтобы исправить это?
  2. Если поведение такое, как ожидалось, и я должен полагаться на localStorage, как я могу определить объект, сохраненный для каждой отдельной вкладки?

Заранее благодарим за вашу помощь!

ответ

0

Да, так работает sessionStorage. Ожидается поведение.

sessionStorage уникален для каждой вкладки. Если пользователь закрывает вкладку, sessionStorage удаляется. То есть хранилище сеансов сохраняется только до тех пор, пока пользователь остается на вкладке.

Все, что вы храните в localStorage, сохраняется до явного удаления. Сделанные изменения сохраняются и доступны для всех текущих и будущих посещений сайта.

Итак, да, было бы лучше использовать localStorage и очистить его в конце сеанса.

+0

Я могу понять удаление sessionStorage, если пользователь закрывает вкладку. Однако для описанного сценария пользователь фактически не закрывает вкладку. Он просто переключается на другую вкладку или отправляет браузер на задний план, а затем возвращается. В среде рабочего стола я уверен, что ни одна из этих операций не приведет к очистке sessionStorage; в то время как на мобильных устройствах поведение кажется другим. – CLDev

+0

Решение localStorage будет работать, если пользователь отобразит только один экземпляр моего сайта. Если мой веб-сайт открыт несколько раз на нескольких вкладках, какой наилучший подход однозначно идентифицировать каждый из них и вернуть соответствующий сохраненный объект? – CLDev

Смежные вопросы