19

QuotaExceededError (DOM Exception 22): The quota has been exceeded.当我处于隐身模式时,我正在使用 Safari 。

我遇到了类似的问题:QuotaExceededError: Dom exception 22: An attempt to add something to storage that exceeded the quota

但是他们谈论 setItem,我在其他地方得到了这个错误。

我在这一行收到此错误:localStorage['gallery.extensions'] = JSON.stringify({});localStorage['asdf'] = 'asdfg';

我尝试结合这个答案并替换每一行喜欢localStorage['asdf'] = 'asdfg';localStorage.setItem('asdf', 'asdfg')和每一个访问喜欢localStorage['asdf']的,localStorage.getItem('asdf')但这也没有帮助。

4

2 回答 2

26

您不能在隐身模式下使用本地存储。通过将 setItem 或 getItem 调用包装在 try/catch 中,只会帮助您的代码处理本地存储的失败使用,然后提醒用户他们需要在非私有模式下使用您的应用程序。

你得到的错误是设计使然。

编辑 2021:您现在可以在隐身模式下使用 localStorage。当您用完每个应用程序/域允许的存储空间限制时,也会发生此错误。在撰写本文时,大多数浏览器限制为 10mb。

于 2017-02-26T11:35:32.757 回答
21

接受的答案不正确。当 localStorage.setItem 内存不足并引发错误时,就会发生这种情况。正如另一位评论者所写,始终将 setItem 包装在 try {} catch() {}

于 2021-01-12T00:08:45.853 回答