当我处于隐身模式时,我在 Safari 上获得QuotaExceededError (DOM Exception 22): The quota has been exceeded.
。
但是他们谈论 setItem,我在别的地方得到这个错误。
我在这一行得到这个错误:localStorage['gallery.extensions'] = JSON.stringify({});
或localStorage['asdf'] = 'asdfg';
我尝试组合this answer并将每一行localStorage['asdf'] = 'asdfg';
替换为localStorage.setItem('asdf', 'asdfg')
,并将每个访问localStorage['asdf']
替换为localStorage.getItem('asdf')
,但这也没有帮助。
您不能在隐身模式下使用本地存储。通过将您的 setItem 或 getItem 调用包装在 try / catch 中只是帮助您的代码处理本地存储的失败使用,然后提醒用户他们需要在非私有模式下使用您的应用程序。
你得到的错误是设计。
编辑 2021:您现在可以在隐身模式下使用 localStorage。当您用完每个应用程序 / 域允许的存储空间限制时,也会发生此错误。在编写时大多数浏览器限制为 10mb。
接受的答案是不正确的。当 localStorage.setItem 内存不足并抛出错误时会发生这种情况。正如另一个评论者所写,总是将 setItem 包装在 try {} catch () {} 中
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(81条)