QuotaExceededError(DOM例外22):隐身中的Safari已超出配额

shi*_*zou 5 javascript safari incognito-mode

我得到QuotaExceededError (DOM Exception 22): The quota has been exceeded.的Safari浏览器,当我在隐身模式来的.

我经历了类似的问题:QuotaExceededError:Dom例外22:尝试向超出配额的存储添加内容

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

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

我尝试将这个答案结合起来,并将每一行替换localStorage['asdf'] = 'asdfg';localStorage.setItem('asdf', 'asdfg')和每次访问一样localStorage['asdf'],localStorage.getItem('asdf')但这也无济于事.

hed*_*der 12

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


Dav*_*mas 9

您无法在隐身模式下使用本地存储空间.通过在try/catch中包装setItem或getItem调用,可以帮助您的代码处理本地存储的失败使用情况,然后提醒用户他们需要以非私有模式使用您的应用程序.

你得到的错误是设计的.

  • 现在刚刚测试,我完全可以在隐身模式下使用本地存储。想想看,我总是可以(无论如何,这个评论是在上次评论之后 3.5 年)。我不知道“QuotaExceededError”来自哪里 - 它发生在我同事的机器上,但没有发生在我的机器上。去搞清楚。无论如何,我的课程是将 `localStorage.setItem` 和 `localStorage.getItem` 方法包装在 `try` 和 `catch` 中。始终是良好实践(如果本地存储对应用程序并不重要)。自我注意:也适用于其他可能不必要地使应用程序崩溃的非关键代码。 (3认同)
  • 通过Mobile Safari的远程调试,您还可以使用Command-Option-e清除缓存:http://stackoverflow.com/questions/19249961/use-desktop-webinspector-to-clear-cache-in-mobile-safari(https ://developer.apple.com/library/content/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html#//apple_ref/doc/uid/TP40007874-CH2-SW2) (2认同)
  • localStorage 可以在隐身模式下使用 (2认同)