本地存储 - 检测本地存储是否已满

6

有没有方法可以检测本地存储是否已经达到了其最大值? 或者至少能否给出一个错误消息,告诉我不能再存储更多数据,因为已经达到了最大容量?我想捕获这个错误,以便从我的本地存储中删除最早的项目并插入新的项目。

我正在使用本地存储来存储我的数据库查询的一些结果,这样用户就能够立即加载它们,如果这些特定的项目存在于本地存储中。如果不存在,则从服务器检索数据。


可能是什么是localStorage值的最大大小?的重复问题。 - node_modules
抛出错误 - http://chrisberkhout.com/blog/localstorage-errors/ - dmoo
@dmoo,你能把它发布为答案吗?谢谢。 - Voltaire John Secondes Biton
可能是当localStorage满时会发生什么?的重复问题。 - JJJ
1个回答

8

尝试添加本地存储时,如果空间不足,则会抛出此错误。在您的特定情况下,您可以使用此事件来释放一些空间。

try {
  localStorage.setItem("name", "Hello World!"); //saves to the database, "key", "value"
} catch (e) {
  if (e == QUOTA_EXCEEDED_ERR) {
    alert('Quota exceeded!'); //data wasn't successfully saved due to quota exceed so throw an error
  }
}

致谢 - http://chrisberkhout.com/blog/localstorage-errors/

本文讨论了在使用本地存储(local storage)时可能会遇到的常见错误,并提供了一些解决方案。如果您使用本地存储时遇到了问题,可以参考这篇文章来解决。


2
对于那些没有访问给出链接的人,应该提到这不会在所有当前主流浏览器版本中正确工作。检查 e.code === "22" || e.code === "1024" 可能足以覆盖大多数情况。(在当前版本的Chrome、Firefox(+Dev-Edition)、Opera、Edge、IE中测试过。) - Wolfone
我刚刚检查了一下,所有最新的浏览器Chrome、Safari、Firefox都有相同的“QuotaExceededError”异常名称。 - nickbullock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接