我正在将一个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;
我在firefox上收到错误,说数据为空。我在哪里做错了。当我运行chrome扩展时,相同的代码工作正常。 我正在使用firefox addon-sdk。
答案 0 :(得分:3)
localStorage存储的字符串不是booleans,因此您必须相应地进行比较。您需要检查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");
}
演示:: jsFiddle
答案 1 :(得分:1)
它不适用于任何浏览器。
您将“ false ”设置为var data
,因此data.display_tooltip
不存在。
只需询问data
的价值:
if (data == 'true')
display_tooltip = true;
else
display_tooltip = false;
请注意,localStorage
不会存储布尔,因此您在检查值时需要询问“ true ”字符串。
答案 2 :(得分:0)
你的数据是:
data = localStorage.getItem('display_tooltip')
为什么使用data. display_tooltip
进行检查?只需if (data) { ... }
。也许您需要检查data
的类型。也许它是真或假的串,但不是bool。