在两个chrome扩展之间进行通信

时间:2016-03-10 07:45:18

标签: google-chrome-extension

我正在尝试在两个Chrome扩展程序之间进行通信,但无法这样做。

任何帮助都可以解决这个问题。

在background.js中发送msg的第一个扩展名:

chrome.browserAction.onClicked.addListener(
function(tab)
{
    chrome.runtime.onConnect.addListener(function(port)
{
     port.postMessage({status:"hello"});
});

在background.js中接收msg的第二个扩展名:

var port = chrome.runtime.connect({name: "lkddmaimhocofkfhngkdhdicmldnfdpn"});
port.onMessage.addListener(function(message,sender)
{
  alert('listened bg');
});

1 个答案:

答案 0 :(得分:2)

您似乎对发送部件和接收部件感到困惑。

此外,onConnect

之间存在一些差异
  

在从扩展进程或内容脚本建立连接时触发,

onConnectExternal

  

在从另一个分机建立连接时触发。

查看Message External,您可以使用以下示例代码在两个扩展程序之间进行通信。

在background.js中发送msg的第一个扩展名:

chrome.browserAction.onClicked.addListener(function() {
    var port = chrome.runtime.connect("lkddmaimhocofkfhngkdhdicmldnfdpn");
    port.postMessage(...);
});

在background.js中接收msg的第二个扩展名:

chrome.runtime.onConnectExternal.addListener(function(port) {
    port.onMessage.addListener(function(msg) {
        // Handle your msg
    });
});