我使用Sentry来跟踪我的网站中的错误。问题是有时chrome移动的for android有一个空的localStorage,导致所有相关的方法,如getItem或setItem将产生一个错误(是的,它是片状)。你以前遇到过这样的问题吗?我想知道这个问题的最佳解决方案。谢谢你:)
6ljaweal1#
也许是因为这个问题已经存在了2年了,他们已经改变了一些东西,但是localStorage在Android Chrome中确实可以通过localStorage.setItem()和getItem()调用来工作。然而,如果你已经在那里放置了一个页面,并且你添加了与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键入屏幕名称,然后按“保存”按钮:
然后,您可以停止并再次运行plunkr,您将看到您的屏幕名称已保存到localStorage中,并从localStorage中读取以填充顶部消息:
我实际上已经在各种版本的Android、iOS(在iPad上)和各种桌面浏览器上测试过了,它在每种情况下都能正常工作。下面是调用localStorage.setItem()的代码
function writeScreeNameToStorage(screenName){ var encodedScreenName = getEncodedValue(screenName); localStorage.setItem("screenName", encodedScreenName); }
1条答案
按热度按时间6ljaweal1#
也许是因为这个问题已经存在了2年了,他们已经改变了一些东西,但是localStorage在Android Chrome中确实可以通过localStorage.setItem()和getItem()调用来工作。
然而,如果你已经在那里放置了一个页面,并且你添加了与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
键入屏幕名称,然后按“保存”按钮:
然后,您可以停止并再次运行plunkr,您将看到您的屏幕名称已保存到localStorage中,并从localStorage中读取以填充顶部消息:
我实际上已经在各种版本的Android、iOS(在iPad上)和各种桌面浏览器上测试过了,它在每种情况下都能正常工作。
下面是调用localStorage.setItem()的代码