chromeStorage在chrome mobile android中为null

时间:2017-10-19 15:23:50

标签: javascript android google-chrome local-storage sentry

我使用Sentry来跟踪我网站中的错误。问题是有时chrome mobile for android有一个null localStorage导致所有相关的方法,如getItem或setItem会产生错误(是的,它是片状的)。你之前遇到过这样的问题吗?我想知道这个问题的最佳解决方案。

谢谢:)

1 个答案:

答案 0 :(得分:0)

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

但是,如果您已经在其中放置了一个页面,并添加了与Chrome Caching行为相关的localStorage,则会出现问题/挑战。那就是我遇到的问题。

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

我重新加载了JS文件,并看到它在Android Chrome浏览器中进行了更新,因此我回到了使用JS文件的页面,但该文件仍未保存到localStorage。

要使其正常工作,我必须完全关闭Android Chrome(刷新JS文件后),最后localStorage确实可以工作。

这是一个笨拙的地方,您可以将移动设备指向并在localStorage中保存一个值,以向自己证明它可以工作。

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

输入屏幕名称,然后按保存按钮:

plunkr running

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

localStorage works on Android Chrome

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

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

function writeScreeNameToStorage(screenName){
    var encodedScreenName = getEncodedValue(screenName);
    localStorage.setItem("screenName", encodedScreenName);
}