现在我在内容脚本中使用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 {}
}
);
感谢您的帮助!
答案 0 :(得分:3)
您是否查看了chrome.storage
API?它的一个特定用例(优于localStorage
)是内容脚本可以直接访问此API,无需使用消息传递与您的后台页面进行通信。 (你甚至可以完全消除背景页面。)