私のChrome拡張機能は、「コンテンツスクリプト」と「ポップアップ」ページの間でメッセージを渡すために、長期間有効な「ポート」オブジェクトを使用します。「ポップアップ」は、「コンテンツスクリプト」イベントリスナーにメッセージを送信できます。ただし、「コンテンツスクリプト」の「ポート」オブジェクトは「ポップアップ」ページにメッセージを送信できません。
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 );
});
});
'port.postMessage(Object obj)'を実行すると、プラグインは次のエラーをスローします。
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
'Port'オブジェクトと'incomingPort'オブジェクトを使用してみましたが、どちらも同じ'Error'をスローします。事前に作成された「Port」オブジェクトのスコープに関係しているように感じます。
プラグインコードは、このgitリポジトリhttps://github.com/snambi/chrome_plugin/tree/master/src/chromeで入手できます。
このプラグインの何が問題になっていますか?