【问题标题】:QuotaExceededError (DOM Exception 22): The quota has been exceeded on Safari in incognitoQuotaExceededError (DOM Exception 22): 已在 Safari 上以隐身模式超出配额
【发布时间】:2017-07-17 00:18:59
【问题描述】:

当我处于隐身模式时,我在 Safari 上收到 QuotaExceededError (DOM Exception 22): The quota has been exceeded.

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

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

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

我尝试将this answer 组合起来,并将localStorage['asdf'] = 'asdfg'; 之类的每一行替换为localStorage.setItem('asdf', 'asdfg'),并将localStorage['asdf'] 之类的每个访问替换为localStorage.getItem('asdf'),但这也无济于事。

【问题讨论】:

  • I get this error on this line - 这就像使用 setItem - 所以同样的约束
  • 您链接到stackoverflow.com/questions/21159301/… 的问题中接受的答案适用于您的情况
  • 我从这里添加了代码:stackoverflow.com/a/27081419/4279201,但它仍然在该行抛出了这个错误。
  • 但我需要在隐身模式下测试我的应用程序,因为我不想每次更改某些内容时都去清理我的数据。 @JaromandaX

标签: javascript safari incognito-mode


【解决方案1】:

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

您遇到的错误是设计使然。

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

【讨论】:

  • 那么,如果 OSX 上的开发者每次都需要清理缓存和数据,他们应该如何测试他们的应用呢?
  • @kuhaku This link 可能会有所帮助。就个人而言,通过打开开发者工具窗口在 Chrome 中进行开发时,缓存会在每次页面刷新时自动清除。您还可以在网页中添加代码,以在每次页面加载时强制从本地存储中删除项目,以确保在您的页面加载之前它是干净的。
  • 通过 Mobile Safari 的远程调试,您还可以使用 Command-Option-e 清除缓存:stackoverflow.com/questions/19249961/… (developer.apple.com/library/content/documentation/…)
  • 刚刚测试,我完全可以隐身使用本地存储。想想我总是可以的(无论如何,这个评论是在最后一个评论之后的 3.5 年)。我不知道QuotaExceededError 来自哪里 - 它发生在我同事的机器上,但没有发生在我的机器上。去搞清楚。无论如何,我的教训是将localStorage.setItemlocalStorage.getItem 方法包装在trycatch 中。始终是好的做法(如果本地存储对应用程序不重要)。自我注意:也适用于可能不必要地使应用程序崩溃的其他非关键代码。
  • localStorage 可以在隐身模式下使用
【解决方案2】:

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

【讨论】:

猜你喜欢
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 2019-11-11
  • 2016-11-16
  • 2017-12-31
  • 2019-03-16
  • 2021-10-19
相关资源
最近更新 更多