当我处于隐身模式时,我在 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 中,有助于您的代码处理本地存储的失败使用,然后提醒用户他们需要在非私有(private)模式下使用您的应用程序。
您遇到的错误是设计使然。
2021 年编辑:您现在可以在隐身模式下使用 localStorage。当您用完每个应用程序/域允许的存储空间限制时,也会发生此错误。在撰写本文时,大多数浏览器限制为 10mb。
关于javascript - QuotaExceededError (DOM Exception 22) : The quota has been exceeded on Safari in incognito,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42467908/