Błąd przekazywania wiadomości Chrome: próba użycia odłączonego obiektu portu
Moje rozszerzenie chrome używa długotrwałego obiektu „Port” do przesyłania wiadomości między stroną „skrypt treści” i „popup”. „Popup” może wysłać wiadomość do detektora zdarzeń „content script”. Jednak obiekt „Port” w „skrypcie treści” nie może wysłać wiadomości do strony „popup”.
var port = chrome.extension.connect({"name":"swap"});
// listener for incoming connections
chrome.extension.onConnect.addListener(function( incomingPort ){
// listener on incoming messages
incomingPort.onMessage.addListener(function( msg ){
if( msg.command === 'get_scripts' ){
//do work
}
var scrs = { 'scripts' : 'name' };
var result = port.postMessage( scrs );
});
});
Podczas wykonywania 'port.postMessage (Object obj)' wtyczka zgłasza następujący błąd:
Error in event handler for 'undefined': Attempting to use a disconnected port object Error: Attempting to use a disconnected port object
at PortImpl.postMessage (miscellaneous_bindings:54:5)
at chrome-extension://loiamkgdhfjdlkcpehnebipeinpcicfj/swap.js:27:31
at [object Object].dispatch (event_bindings:203:41)
at Object.<anonymous> (miscellaneous_bindings:250:22) event_bindings:207
Próbowałem użyć obiektu „Port” i obiektu „incomingPort”, obaj rzucają ten sam „błąd”. Odnosi się to do zakresu wstępnie utworzonego obiektu „Port”.
Kod wtyczki jest dostępny w tym repozytorium githttps://github.com/snambi/chrome_plugin/tree/master/src/chrome
Co jest nie tak w tej wtyczce?