我在使用本地存储的 Web 应用程序中遇到了一个问题,该问题不是很频繁,但仍会定期发生。
该问题仅发生在 iOS/macOS 设备中,与浏览器无关,并且记录的错误如下:
类型错误:'null' 不是一个对象(评估 'localStorage.getItem')
下面是代码的工作原理;有一个函数 ( isLocalStorageSupported) 检查是否支持本地存储,还有另一个函数 ( getLocalData) 在尝试从存储中获取数据之前使用它。
在通过返回 true 完成对本地存储的检查后抛出错误,但是当尝试从本地存储获取密钥时,下一行 (?) 莫名其妙地抛出,因为该阶段的存储变量似乎为空。
我不清楚这是怎么发生的,因此我的问题。
// The function that checks availability
const isLocalStorageSupported = (() => {
let localStorageSupported = null;
return () => {
if (localStorageSupported !== null) {
return localStorageSupported;
}
try {
localStorage.setItem('check', 'check');
localStorage.getItem('check');
localStorage.removeItem('check');
localStorageSupported = true;
} catch (error) {
localStorageSupported = false;
console.error('localStorage not supported');
}
return localStorageSupported;
};
})();
const getLocalData = (key) …Run Code Online (Sandbox Code Playgroud) 我无法访问Safari中的localStorage(使用IOS-6的IPad).
例如,以下代码在Windows上适用于所有浏览器和(iOS版本为iOS),但不适用于iOS-6:
localStorage.setItem("var","5");
alert(localStorage.getItem("var"));
Run Code Online (Sandbox Code Playgroud)
请帮忙.