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
:然后假设您想要自己的分机,并且不会将其发送到任何其他分机。
如那里所述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
:然后假设您想要自己的分机,并且不会将其发送到任何其他分机。