【问题标题】:Error: The quota has been exceeded. on Safari IOS 10错误:已超出配额。在 Safari IOS 10 上
【发布时间】:2017-04-13 21:34:08
【问题描述】:

我在 iPhone 的 safari 上遇到此错误,在此处执行 localStorage.setItem('user',some string):

错误:已超出配额。
setItem@[本机代码]

不是私人模式!还有哪些情况会导致 localStorage 不起作用?

【问题讨论】:

标签: javascript safari local-storage ios10


【解决方案1】:

我创建了这个类来帮助绕过隐私浏览。但是,当您刷新浏览器时,存储空间会被吹走。

const data = {};
let hasLocalStorage = false;

if (localStorage) {
  try {
    const x = 'storageTest';
    localStorage.setItem(x, x);
    localStorage.removeItem(x);
    hasLocalStorage = true;
  } catch (e) {
    hasLocalStorage = false;
  }
}

class StorageUtilities {
  setItem(key, value) {
    if (hasLocalStorage) {
      localStorage.setItem(key, value);
    } else {
      data[key] = value;
    }
  }

  getItem(key) {
    if (hasLocalStorage) {
      return localStorage.getItem(key);
    }
    return data[key];
  }

  removeItem(key) {
    if (hasLocalStorage) {
      localStorage.removeItem(key);
    } else {
      data[key] = null;
    }
  }
}

const storageUtilities = new StorageUtilities();

export default storageUtilities;

【讨论】:

  • 这很有帮助。谢谢你。另外,如果 setItem 函数中的值不为空,我会将值转换为 String 以获得更一致的行为。
【解决方案2】:

其实是私人模式。看起来它在新 iphone 上默认启用。

【讨论】:

  • 现在等待。这是什么私人模式?我只是遇到了 Chrome 工作正常但 Safari 不正常的问题,我刚刚想出了如何从我的 iPhone 上做 Web Inspector。 (developer.apple.com/library/content/documentation/…) 但也许这里的一些额外信息可以帮助人们理解为什么我们要克服这个私人模式障碍以及如何避免它?我不希望我的用户不得不修改原版 Safari Mobile 设置。
  • 感谢 Apple 提供如此有用的错误信息。 :-( Angular 和 Satellizer 都搞清楚了 "o = k(b) || (h.warn("This browser does not support Web Storage!"), {" But Quota Exceeded?真的吗?
猜你喜欢
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 2023-03-28
  • 1970-01-01
相关资源
最近更新 更多