chrome 移动 android 中的 localStorage 为空

2024-01-09

I use Sentry https://sentry.io跟踪我的网站中的错误。问题是有时 Android 版 chrome mobile 的 localStorage 为空,导致所有相关方法(例如 getItem 或 setItem)都会产生错误(是的,它很不稳定)。您以前遇到过这样的问题吗?我想知道这个问题的最佳解决方案。

谢谢 :)


也许是因为这个问题已经有近 2 年的历史了,而且他们已经改变了一些东西,但 localStorage 肯定可以在 Android Chrome 中通过 localStorage.setItem() 和 getItem() 调用工作。 不需要 Polyfill。

但是,如果您已经将页面放在那里并添加与 Chrome 缓存行为相关的 localStorage,则会出现问题/挑战。这就是我遇到的问题。

我在网络上有一个页面,通过 JavaScript 做了一些事情。然后我添加了简单的 localStorage 调用来写入和读取字符串值。我发现localStorage会失败。
最后,我直接在 Android chrome 浏览器中加载 .js 文件,并看到 JS 是该文件的缓存版本。

我重新加载了 JS 文件并在 Android Chrome 中看到它更新,因此我返回到使用 JS 文件的页面,但它仍然没有保存到 localStorage。

为了让它工作,我必须完全关闭 Android Chrome(刷新 JS 文件后),最后 localStorage 确实工作了。

这是一个 plunkr,您可以将移动设备指向并在 localStorage 中保存一个值,以向自己证明它有效。

http://plnkr.co/edit/dWgfh5WuMcM3InR0OaN4?p=info http://plnkr.co/edit/dWgfh5WuMcM3InR0OaN4?p=info

输入屏幕名称并按“保存”按钮:

然后您可以再次停止并运行 plunkr,您将看到您的屏幕名称已保存到 localStorage 并从 localStorage 中读出以填充顶部消息:

我实际上已经在各种版本的 Android、iOS(在 iPad 上)和各种桌面浏览器上对此进行了测试,它在每种情况下都有效。

这是调用 localStorage.setItem() 的代码

function writeScreeNameToStorage(screenName){
    var encodedScreenName = getEncodedValue(screenName);
    localStorage.setItem("screenName", encodedScreenName);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

chrome 移动 android 中的 localStorage 为空 的相关文章

随机推荐