Chrome 分机:发送到选项卡的消息是否可以被任何 chrome 分机收听

Chrome Extension: Do messages sent to tabs can be listen by any chrome extension

如那里所述https://developer.chrome.com/extensions/messaging, 使用以下代码发送消息时

chrome.runtime.sendMessage(chrome.runtime.id, <message>);

只能被同扩展的后台脚本接收

--

但是发送到标签页的消息呢? 是否使用以下代码发送消息

chrome.tabs.query({}, function(tabs) {
    for (var i=0; i<tabs.length; ++i) {
        chrome.tabs.sendMessage(tabs[i].id, message, callback);
    }
});

可以通过任何扩展的内容脚本接收吗?

没有。它将在您自己的扩展 ID 的上下文中广播到该选项卡中的所有框架。我的意思是每一帧都有自己的 "page" 与之相关联的上下文,并且每个在其中注入脚本的扩展都有一个上下文,并且它们彼此隔离。

因此只有您的上下文脚本会收到它。事实上,直接向另一个扩展程序的内容脚本发送消息是不可能的。

这类似于不带 ID 调用 runtime.sendMessage:然后假设您想要自己的分机,并且不会将其发送到任何其他分机。