javascript - Android 上的 sessionStorage 意外清理

标签 javascript android mobile web session-storage

我有一个网站,它将字符串化的 JavaScript 对象保存到 sessionStorage 中。它在桌面浏览器上运行良好 - 根据 MDN 上的描述,数据在页面重新加载后仍然存在。

在 Android 手机上,当用户从另一个选项卡切换回来或浏览器从后台返回到前台时,重新加载选项卡的情况并不罕见,我预计 sessionStorage 将持续存在。然而情况似乎并非如此。 sessionStorage 丢失了,就像创建了一个新 session 一样。

我想过使用 localStorage 来代替,即使 session 关闭它也不会过期。但它并没有真正解决我所有的问题 - 因为我希望用户可以在多个选项卡上多次打开它,并在每个选项卡上执行不同的操作。

所以我的问题是:

  1. 上面描述的 sessionStorage 行为是否符合预期?如果不是,我可以采取什么措施来纠正它?
  2. 如果行为符合预期,并且我必须依赖 localStorage,那么如何识别为每个单独选项卡存储的对象?

预先感谢您的帮助!

最佳答案

正如其他人评论的那样,SessionStorage 的设计是临时的。移动浏览器生命周期高度致力于减少资源使用,并且选项卡的拆卸更加积极。

要解决此问题,您可以将随机选项卡 ID 推送到 URL,然后为所有 LocalStorage 键添加此 ID 前缀。刷新选项卡时,您只需从 URL 读取选项卡 ID 并使用它来访问 LocalStorage 中的数据。

LocalStorage 有一个非常简单的 API,因此您可以编写一个包装器,将键前缀隐藏在其他代码之外。

关于javascript - Android 上的 sessionStorage 意外清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36659605/

相关文章:

javascript - Backbone.js "Todos"示例 - 不确定为什么某个代码片段有效

javascript - Jquery UI Slider 多重启动

javascript - 等待 'ended' 的视频事件监听器未触发

javascript - 向下滚动页面时如何更改 H1 颜色?

java - 查找不存在的布局

Android Activity 方向改变,每次新实例

android - PictureCallback 在 'onPictureTaken' 中获取 byte[] 数据,但它与我在 CameraView 中看到的图像不匹配。

javascript - 移动设备滑动导航示例

html - 调整浏览器大小时防止 div 堆叠

mobile - h.264/svc 移动支持