2016-03-10 3 views
1

Я пытаюсь установить связь между двумя хромированными расширениями, но не могу этого сделать.Связь между двумя хромированными расширениями

Любая помощь будет решена при решении этой проблемы.

первого расширение отправки Сообщи в background.js:

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

второго расширение прием сбщи в background.js:

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

ответ

2

Кажется, вы запутались с представляемой частью и принимающей стороной.

Кроме того, существуют некоторые различия между onConnect

, который срабатывает, когда соединение выполнено из любого процесса расширения или скрипта содержимого,

и onConnectExternal

, который срабатывает при соединении с другим расширением.

Посмотрите на Message External, и вы можете использовать следующий пример кода для связи между двумя расширениями.

первое расширение отправки тзд в background.js:

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

второе расширение приема сбщ в background.js:

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

Нужно подчеркнуть, что основная проблема заключается в использовании 'onConnect' вместо 'onConnectExternal'. Остальная часть логики ошибочна, да, но это шоу-стоппер. – Xan

+0

@Xan, обновленный, как вы сказали. –

+0

@ Xan, ты просто классный парень. –