javascript - Chrome 扩展程序 - Localstorage 不工作

标签 javascript google-chrome local-storage

我正在编写一个 Chrome 扩展程序,它使用内容脚本来修改网站的某些部分。在我尝试向我的扩展程序添加选项页面之前,内容脚本工作正常。

现在我正在使用 options.html 文件将用户首选项保存到本地存储,如您在此处所见:

    <html>
    <head><title>Options</title></head>
        <script type="text/javascript">

        function save_options() {
            var select = document.getElementById("width");
            var width = select.children[select.selectedIndex].value;
            localStorage["site_width"] = width;
        }

        function restore_options() {
          var fwidth = localStorage["site_width"];
          if (!fwidth) {
            return;
          }
          var select = document.getElementById("width");
          for (var i = 0; i < select.children.length; i++) {
            var child = select.children[i];
            if (child.value == fwidth) {
              child.selected = "true";
              break;
            }
          }
        }

        </script>

    <body onload="restore_options()">

    Width:
        <select id="width">
            <option value="100%">100%</option>
            <option value="90%">90%</option>
            <option value="80%">80%</option>
            <option value="70%">70%</option>
        </select>

        <br>
        <button onclick="save_options()">Save</button>
    </body>
</html>

我还有一个 background.html 文件来处理内容脚本和本地存储之间的通信:

<html>
    <script type="text/javascript">

        chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
            if (request.method == "siteWidth")
                sendResponse({status: localStorage["site_width"]});
            else
                sendResponse({});
        });

    </script>
</html>

然后是实际的内容脚本,如下所示:

var Width;

chrome.extension.sendRequest({method: "siteWidth"}, function(response) {
        width = response.status;
    });

这些代码都没有实际工作。它对我来说看起来足够可靠,但我不是一个非常有经验的程序员,所以我可能是错的。

谁能用通俗易懂的语言向我解释一下 localstorage?

最佳答案

window.localStorage 具有访问内部对象映射需要使用的 getter 和 setter。

所以,要设置:

localStorage.setItem(key, value);

得到:

localStorage.getItem(key);

清除 map :

localStorage.clear();

删除项目:

localStorage.removeItem(key);

获取长度:

localStorage.length

根据内部映射中的索引键:

localStorage.key(index);

阅读更多:http://dev.w3.org/html5/webstorage/#the-storage-interface

window.localStorage 实现了Storage 接口(interface):

interface Storage {
 readonly attribute unsigned long length;
 DOMString key(in unsigned long index);
 getter any getItem(in DOMString key);
 setter creator void setItem(in DOMString key, in any value);
 deleter void removeItem(in DOMString key);
 void clear();
};

关于javascript - Chrome 扩展程序 - Localstorage 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5323550/

相关文章:

html - 从 Chrome 中的 CSS 列顶部删除额外空间

javascript - 使用本地存储进行 css 切换开关时遇到问题

ios - 捕获并存储用相机拍摄的照片到本地数据库/PhoneGap/Cordova/iOS

javascript - Passport JS 身份验证中间件问题

javascript - 看不懂条件执行流程

javascript - 比特币/英镑的汇率如何计算?

javascript - 将自定义 CSS 添加到使用 webview 呈现的 HTML 页面

Javascript - 如何将数据传递给 promise 返回

python - 如何在 Selenium Webdriver Python 3 中使用 Chrome 配置文件

javascript - 隐藏所有站点页面上的元素