26

有没有办法让后台脚本通知所有当前打开的选项卡(即它们的内容脚本)发生了事件。

基本上类似于以下内容

chrome.tabs.sendMessage("*", {foo: "bar"})

我怀疑我可以在后台脚本上维护一个打开的选项卡列表,如果可能的话,并使用它。但是有没有更简单的方法?

4

2 回答 2

63

不支持通配符。访问所有选项卡的唯一方法是查询所有现有选项卡,并使用chrome.tabs.sendMessage.

chrome.tabs.query({}, function(tabs) {
    var message = {foo: bar};
    for (var i=0; i<tabs.length; ++i) {
        chrome.tabs.sendMessage(tabs[i].id, message);
    }
});
于 2013-04-16T20:39:01.677 回答
0

取自 Rob W 的示例。这可能会好一点:

chrome.tabs.query({}, (tabs) => tabs.forEach( tab => chrome.tabs.sendMessage(tab.id, message) ) );
于 2021-08-23T16:50:02.480 回答