本地存储在火狐中无法按预期工作.返回空值的对象

Localstorage not working as intended in firefox. Returns object of null

本文关键字:工作 返回 空值 对象 存储 火狐      更新时间:2023-09-26

我正在将chrome扩展移植到Firefox。Chrome 中一切都很好,但以下代码在 Firefox 中生成错误。

localStorage.setItem("display_tooltip", false);
data = localStorage.getItem('display_tooltip');
    if(data.display_tooltip)                  //line where error occurs
        display_tooltip = true;
    else
        display_tooltip = false;

我在火狐上收到一个错误,说数据为空。我哪里做错了。当我运行 chrome 扩展程序时,相同的代码可以完美运行。我正在使用火狐插件-sdk。

localStorage 存储字符串而不是布尔值,因此您必须相应地进行比较。并且您需要检查data变量而不是data.display_tooltip,因为:

localStorage.setItem("display_tooltip", false);
data = localStorage.getItem('display_tooltip'); 
// variavle 'data' holds value stored in 'display_tooltip' variable
if(data == "true") {
    //your code
    alert("True");
}
else {
    //false, your code
    alert("False");
}

演示:: js小提琴

它不适用于任何浏览器。

您正在将"false"设置为变量data因此data.display_tooltip不存在。

只需询问data的值:

if (data == 'true')
  display_tooltip = true;
else
 display_tooltip = false;

请注意,localStorage不存储布尔值,因此在检查值时需要询问"true"字符串。

你的数据是:

data = localStorage.getItem('display_tooltip')

为什么使用data. display_tooltip进行检查?只是if (data) { ... }.也许您需要检查data的类型.也许它是一串真或假,但不是布尔值。