我有一个带有内容脚本和弹出脚本的chrome扩展。在弹出窗口中,我有一个设置页面,通过使用chrome messaging与内容脚本对话来更改内容脚本上的某些变量。内容脚本可在所有YouTube网站上运行。如果有多个YouTube /内容脚本实例,则会在弹出窗口中更改当前查看页面上的设置/值。有没有办法在所有页面上与内容脚本的所有实例进行对话?目前我正在使用localstorage作为解决方法,因此当用户在其中设置值/设置时,它会在刷新页面或存在新实例时将其设置在另一个上。
答案 0 :(得分:1)
您可以使用tabs.query获取具有特定属性的所有标签,然后将消息传递给每个标签。
chrome.tabs.query({currentWindow: true}, function (tabs) {
for (var i = 0; i < tabs.length; i++) {
if (chrome.runtime.lastError) {
// handle errors like access issues
} else {
// Do message passing here
}
}
});
答案 1 :(得分:1)
如果您使用chrome.storage
API保留设置,则您的内容脚本可以:
chrome.storage.onChanged
来检测更改并做出相应的反应。那可能是最不凌乱的&#34;溶液