【发布时间】:2014-08-04 07:44:14
【问题描述】:
我在内部应用程序中以非常基本的方式使用 localStorage。它只存储一个简单的字符串值“最新”或“最旧”:
localStorage.setItem('sortOrder', val)
但由于某种原因,某些用户在 Firefox 中抛出以下错误:
Component returned failure code: 0x80630002 (NS_ERROR_STORAGE_IOERR) [nsIDOMStorage.getItem]
Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMStorage.getItem]
IOERR 每天大约发生 125 次,涉及数百个页面加载,而 FAILURE 仅发生 5 次左右。
我找到了https://bugzilla.mozilla.org/show_bug.cgi?id=700841,但我们的用户都没有安装任何扩展。
除了 localStorage 的这个包装器之外,Google 不会返回任何特别有用的东西:https://github.com/doochik/SafeLS
我很犹豫是否要默默地捕捉所有错误,但没有更多信息,这听起来像是唯一的解决方案......
有没有人了解这些错误的实际含义?有什么想法会导致 localStorage 抛出这些错误吗?
【问题讨论】:
-
在 sortOrder 之后可能缺少一个 ':
localStorage.setItem('sortOrder', val) -
只是我的错字,不是复制/粘贴。我会改正的。
-
我认为在“try/catch”之外没有合适的解决方法。我在每天有 10 万用户的页面上使用 sessionStorage,并且在我的日志中没有遇到任何这些错误。基本上,我将我的测试包装在 try catch 周围进行存储,否则使用 cookie。在不同的浏览器上 - 您可能会遇到问题...当 cookie 被禁用并且您正在使用存储或在私有模式下运行等时...
-
NS_ERROR_STORAGE_IOERR真的只是SQLITE_IOERR,所以这听起来像是您的一个或多个用户的文件系统损坏、文件系统已满或损坏、访问被拒绝或锁定webappstore.sqlite。 -
我在本地安装 MediaWiki 时遇到了同样的错误。删除 Firefox 配置文件文件夹中的 webappstore.sqlite 并因此让 Firefox 强制重建它为我解决了这个问题。请在stackoverflow.com/a/26371494/1696030 上查看我的扩展答案
标签: javascript html firefox local-storage