javascript - Safari IOS 10 上的错误 : The quota has been exceeded.

标签 javascript safari local-storage ios10

我在 iPhone 的 safari 上遇到这个错误,在执行 localStorage.setItem('user',some string here) 时:

Error: The quota has been exceeded.
setItem@[native code]

不是私有(private)模式!还有哪些情况会导致 localStorage 不工作?

最佳答案

我创建了这个类来帮助绕过隐私浏览。但是,当您刷新浏览器时,存储空间将被消耗殆尽。

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;

关于javascript - Safari IOS 10 上的错误 : The quota has been exceeded.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40873498/

相关文章:

javascript - 在滚动条上隐藏不透明度为 0.9 的固定 div

javascript - Vue.js:当用户登录或未登录时,根据 Vuex Store 状态显示/隐藏导航栏上的按钮

javascript - 正则表达式 - 匹配直到有相同数量的 2 个特定字符

javascript - 如何检查鼠标光标是否超过某个 x 坐标?

javascript - window.speechSynthesis.getVoices() 在 macOS safari 15.4 上返回空数组

javascript - 如何在 Javascript 中出现错误时中断

javascript - 使用 jQuery 检测表单中的数据更改

javascript - 延迟循环nodejs的每次迭代

javascript - LocalStorage - 检测本地存储是否已满

node.js - JWT - 将它们存储在 LocalStorage 与 SessionStorage 中