与内容脚本

时间:2016-03-22 00:53:18

标签: javascript angularjs google-chrome google-chrome-extension

我有一个带有内容脚本和弹出脚本的chrome扩展。在弹出窗口中,我有一个设置页面,通过使用chrome messaging与内容脚本对话来更改内容脚本上的某些变量。内容脚本可在所有YouTube网站上运行。如果有多个YouTube /内容脚本实例,则会在弹出窗口中更改当前查看页面上的设置/值。有没有办法在所有页面上与内容脚本的所有实例进行对话?目前我正在使用localstorage作为解决方法,因此当用户在其中设置值/设置时,它会在刷新页面或存在新实例时将其设置在另一个上。

2 个答案:

答案 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保留设置,则您的内容脚本可以:

  1. 直接访问它而不使用Messaging
  2. 通过挂钩chrome.storage.onChanged来检测更改并做出相应的反应。
  3. 那可能是最不凌乱的&#34;溶液