当前位置: 首页 > 面试题库 >

Safari的html5 localStorage错误:“ QUOTA_EXCEEDED_ERR:DOM异常22:试图向存储中添加超出配额的内容。”

濮阳靖
2023-03-14
问题内容

我的webapp在ios Safari私人浏览中出现javascript错误:

JavaScript:错误

未定义

QUOTA_EXCEEDED_ERR:DOM异常22:试图向存储中添加内容…

我的代码:

localStorage.setItem('test',1)

问题答案:

显然,这是设计使然。当Safari(OS X或iOS)处于私有浏览模式时,它似乎localStorage可用,但是尝试调用setItem会引发异常。

store.js line 73
"QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made to add something to storage that exceeded the quota."

发生的事情是该窗口对象仍在localStorage全局命名空间中公开,但是当您调用时setItem,将抛出此异常。的所有呼叫都将removeItem被忽略。

我相信最简单的解决方法(尽管我尚未测试过此跨浏览器)将更改功能isLocalStorageNameSupported()以测试您是否还可以设置一些值。

function isLocalStorageNameSupported() 
{
    var testKey = 'test', storage = window.sessionStorage;
    try 
    {
        storage.setItem(testKey, '1');
        storage.removeItem(testKey);
        return localStorageName in win && win[localStorageName];
    } 
    catch (error) 
    {
        return false;
    }
}


 类似资料:
  • 嗨,我正在尝试重新创建一个足球锦标赛,已经能够创建一个地图的集团,但现在想要添加到每个国家的点数。有人有什么好主意吗?请看看我已经做了什么。

  • 我正在获得。 我尝试将此答案合并,并将等每一行替换为,将等每一个访问替换为,但这也无济于事。

  • 是帐单账户吗?还是那是一个随机事件? 我不相信我的应用程序超出了限制 限制多久重置一次? 在哪里可以看到每个服务/功能的实际限制? 非常感谢和抱歉给你发了这么长的帖子!

  • 我正在尝试将Gradle(1.4)添加到一个现有的项目中,该项目有多个测试套件。位于中的标准单元测试成功运行,但我在设置任务以运行位于中的JUnit测试时遇到了麻烦。 当我运行时,对于中的类,我遇到了几个错误。这使我认为依赖项设置不正确。如何设置以便它运行我的JUnit集成测试? Build.Gradle 细节:1.4级 解决方案:我没有为集成测试源集设置编译类路径(参见下面)。在我的I代码中,我

  • 问题内容: 我想用三个表的联合创建视图。但是在结果查询中,我想要一个额外的列,例如“ tableId”。 我的代码就像 这给了我所需的三个表的并集。但是如何获取结果输出中的表ID列?该列在三个表中都不存在。 问题答案: 这听起来像你只是想一个额外的硬编码值添加到您的列表