0

this simple exampleによると どのコンテンツスクリプト(どのタブ)が実際に背景(行10)にメッセージを送信しているかを知る方法は?タブIDの例。背景-script.jsためexampleコンテンツスクリプトがFirefoxアドオンの背景と通信する方法を教えてください。

+0

私の解決方法は、バックグラウンドで 'browser.tabs.onCreated'を使うことです。すぐにタブIDをコンテンツスクリプトに送りコンテンツスクリプトに保存します。しかし、それは醜いです。 – hayj

答えて

1

portFromCSは、送信者のプロパティを持っていますhttps://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/Port

送信者はまた、あなたができるtab特にtab.id https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/MessageSender

/* background-script.js */ 
browser.runtime.onConnect.addListener(port => { 
    port.onMessage.addListener((msg) => { 
     console.log("bg received", msg, "from tab", port.sender.tab.id); 
    }); 
}); 

を含むオブジェクトであること"one-off"またはコネクションレスメッセージを browser.runtime.onMessage

とする

ハンドラのシグネチャは(msg, sender, reply)で、送信者は上記と同じMessageSenderオブジェクトです。

+0

はい、ありがとうございます。私は 'browser.runtime.onMessage'で' sender.tab.id'を使うことができます。メッセージの1つはより多くの可能性を提供します。しかし、メッセージがバックグラウンドから送信されたときにバックグラウンドで受信されるため、メッセージの内容を確認してコンテンツスクリプトからのメッセージであることを確認する必要があるため注意が必要です。 – hayj

+0

@hayj、同じスクリプトから送信したメッセージのイベントを受信するのに問題があるFirefoxのどのバージョンを使用していますか?私が知っている限り、これはFirefox 51の時点で解決されたバグです。Firefox 51以降で表示されますか? – Makyen

+0

私は51.0.1(64ビット)です。それが私の悪いのではないかどうかをチェックさせてください。 – hayj

関連する問題