如何同步到内容脚本中的扩展本地存储?

Chr*_*mer 1 javascript google-chrome-extension

现在我chrome.extension.sendMessage在内容脚本和chrome.extension.onMessage.addListener后台脚本中使用。但是当我需要实时同步到扩展的本地存储时出现问题(扩展弹出窗口中有几个带有选项的复选框)。

带有复选框的弹出窗口(以控制 content-script.js 选项)-> 存储在扩展本地存储中的复选框状态。

内容脚本需要知道用户在弹出窗口中所做的更改 -> 向后台页面发送请求以访问扩展的本地存储密钥。

后台页面 -> 向内容脚本发送响应 -> 回调函数将所有密钥从扩展的本地存储复制到 Web 本地存储。

内容脚本读取复制的密钥并打开/关闭它的选项。

但是这个过程不是实时的,我需要它是被动的。

内容脚本.js:

chrome.extension.sendMessage({
    name: "cache"
},
function(response) {
    var status = response.url;
    if (status == 'enabled') {
        localStorage['cache'] = 'enabled';
    }
    if (status == 'disabled') {
        localStorage['cache'] = 'disabled';
    }
}
);
Run Code Online (Sandbox Code Playgroud)

后台.js:

chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
    console.log("request recieved is " + request);
    if (request.name == "cache") {
        sendResponse({
            url: JSON.parse(localStorage['cache']).status
        });
    } else {}
}
);
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

yoz*_*yoz 6

你研究过chrome.storageAPI吗?它设计的特定用例之一(优于localStorage)是内容脚本可以直接访问此 API,无需通过消息传递与您的后台页面进行通信。(您甚至可以完全消除背景页面。)

https://developer.chrome.com/extensions/storage