未捕获的(在 Promise 中)TypeError: localStorage.setItem 不是一个函数。

3
我想使用本地存储创建一个项目,但是当我使用setItem保存时,会出现以下错误:

Uncaught (in promise) TypeError: localStorage.setItem不是一个函数

这是我的代码:

var dataPerson = {
    name: "Jhon",
    old: 20,
    family: "Doe",
};
console.log(dataPerson);

if (typeof(Storage) !== "undefined") {
    // Store
    localStorage.setItem("data", JSON.stringify(dataPerson));
} else {
    alert("Sorry, your browser does not support Web Storage...");
}

我使用jQuery v3.4.1,谢谢


从哪个方案?file:// http://?在私密标签页中吗?使用的是哪个浏览器?您是否启用了某些安全设置以防止跟踪/存储Cookie?您是否使用了可能会执行此操作的扩展程序? - Kaiido
3个回答

3

你可以尝试从 window 对象中调用 localStorage...

window.localStorage.setItem("data", JSON.stringify(dataPerson));

这对我有用。

1

1

来自https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

异常

SecurityError 请求违反了策略决策,或者源不是有效的方案/主机/端口元组(例如,如果源使用file:或data:方案)。例如,用户可能已经配置他们的浏览器拒绝为指定的源持久化数据的权限。

因此,您应该用try-catch包装您的代码,这将解决您的问题

Uncaught (in promise) TypeError: localStorage.setItem is not a function

https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API中,您可以找到一个例子,并根据您特定的异常开始

Feature-detecting localStorage

为了能够使用localStorage,我们首先应该验证它是否被支持并且在当前浏览会话中可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接