Localstorage在Firefox中没有按预期工作。返回null的对象

时间:2014-12-01 05:29:18

标签: javascript html5 firefox local-storage firefox-addon-sdk

我正在将一个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。

3 个答案:

答案 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。