【问题标题】:Chrome Extension: Do messages sent to tabs can be listen by any chrome extensionChrome 扩展程序:发送到选项卡的消息是否可以被任何 chrome 扩展程序监听
【发布时间】:2015-01-28 22:00:12
【问题描述】:

正如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);
    }
});

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

【问题讨论】:

    标签: google-chrome-extension sandbox


    【解决方案1】:

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

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

    这类似于在没有 id 的情况下调用 runtime.sendMessage:然后假定您想要自己的扩展程序,并且不会将其发送到任何其他扩展程序。

    【讨论】:

      最近更新 更多