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

时间:2014-06-11 19:44:14

标签: javascript google-chrome-extension

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

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

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

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

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

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

Content-script.js:

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

Backround.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 {}
}
);

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您是否查看了chrome.storage API?它的一个特定用例(优于localStorage)是内容脚本可以直接访问此API,无需使用消息传递与您的后台页面进行通信。 (你甚至可以完全消除背景页面。)

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