0

这是我在 chrome 扩展中的 popup.js:

 function getlink(){

    console.log(document.getElementById("linkify").value);
    if(document.getElementById("linkify").value == "on")
    {
            localStorage.setItem("linkify",false);

            document.getElementById("linkify").innerHTML = "Get links - off";
            document.getElementById("linkify").value = "off";
            console.log(document.getElementById("linkify").value);
            chrome.extension.sendRequest({ msg: "linkify"});

    }
    else if(document.getElementById("linkify").value == "off")
    {
        localStorage.setItem("linkify",true);
        console.log("Hello!");
        document.getElementById("linkify").innerHTML = "Get links - on";
        document.getElementById("linkify").value = "on";
        chrome.extension.sendRequest({ msg: "linkify"});

    }
    }

    $(document).ready(function (){


    if(localStorage.getItem("linkify"))
    {
        document.getElementById("linkify").innerHTML = "Get links - on";
        document.getElementById("linkify").value = "on";
    }
    $("#linkify").click(function() {
      getlink();
    });
    });

基本上,我想要的功能是:扩展中的一个按钮,可以打开或关闭。切换时,其文本会发生变化,存储在 localStorage 中的值也会发生变化。

虽然,切换工作正常,但这是发生的错误:

如果我关闭按钮,那就是把它变成关闭链接并退出弹出窗口。然后再次打开弹窗,按钮状态又回到“on”。它没有保持其状态。

4

2 回答 2

1

你的问题是你如何使用本地存储。本地存储将所有内容存储为字符串

所以基本上:

localStorage.setItem("foo", false)
localStorage.getItem("foo") // returns "false"

if(localStorage.getItem("foo")) {
  console.log("bar")
} else {
  console.log("bing")
}
// Logs bar
于 2012-11-28T02:22:22.613 回答
0

使用 if(JSON.parse(localStorage.getItem("linkify")))

于 2012-11-28T22:38:56.883 回答