Javascript 错误:已超过配额。关于SafariiOS10

Javascript 错误:已超过配额。关于SafariiOS10,javascript,safari,local-storage,ios10,Javascript,Safari,Local Storage,Ios10,当我在iPhone的safari上执行localStorage.setItem('user',此处的一些字符串)时,出现此错误: 错误:已超过配额。 setItem@[本机代码] 它不是私有模式!还有什么其他情况会使本地存储无法工作?实际上它是私有模式。看起来它在新iPhone上是默认启用的。我创建这个类是为了帮助避免私人浏览。但是,当您刷新浏览器时,存储将被吹走 const data = {}; let hasLocalStorage = false; if (localStorage) {

当我在iPhone的safari上执行
localStorage.setItem('user',
此处的一些字符串
时,出现此错误:

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


它不是私有模式!还有什么其他情况会使本地存储无法工作?

实际上它是私有模式。看起来它在新iPhone上是默认启用的。

我创建这个类是为了帮助避免私人浏览。但是,当您刷新浏览器时,存储将被吹走

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;

等一下。这是什么私人模式?我只是遇到了一个问题,Chrome工作正常,但Safari却不行,我刚刚想出了如何在iPhone上执行Web Inspector。()但这里的一些附加信息可能会帮助人们理解为什么我们要克服这种私人模式的障碍,以及如何避免它?我不希望我的用户不得不修改vanilla Safari移动设置。感谢苹果提供了如此有用的错误消息:-(Angular和Satellizer都计算出“o=k(b)| |”(h.warn(“此浏览器不支持Web存储!”),{“但超出了配额?真的吗?可能的重复非常有用。谢谢。另外,如果setItem函数中的值不为null,我会将其转换为字符串,以获得更一致的行为。