バックグラウンドスクリプトと相互通信するポップアップを使用するクロスブラウザー拡張機能を作成しようとしています:
バックグラウンド スクリプトで:
class Listener{
listen(cb){
chrome.runtime.onMessage.addListener((transmission, sender, messageResponseFn) => {
cb(transmission, messageResponseFn);
return true;
});
}
}
export default new Listener();
ポップアップで:
class Emitter{
send(message, payload){
return new Promise((resolve, reject) => {
chrome.runtime.sendMessage({ message, payload }, (responseMessage) => {
resolve(responseMessage);
});
});
}
}
export default new Emitter();
これは Chrome では期待どおりに機能しますが、Firefox では、送信された応答 (関数は正しく呼び出され、スローされません) が my に到着しませんEmitter
。この API の使い方は間違っていますか? 私が認識していない Firefox と Chrome の違いはありますか? ドキュメントで読んだことから、runtime.sendMessage
APIは完全にサポートされているはずです。
FWIW、これは問題を示すリポジトリの例です: https://github.com/m90/firefox-webextension-issue