我想寫使用背景劇本和一個彈出窗口,跨通信的跨瀏覽器擴展的響應:使用chrome.runtime.sendMessage不會產生在火狐擴展
在後臺腳本:
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中發送響應(在函數調用正確和不扔)永遠不會到達我的Emitter
。我使用這個API錯了嗎? Firefox和Chrome之間有什麼區別,我不知道?從我在the docs中看到的runtime.sendMessage
API應該完全支持。
FWIW,這裏有一個例子展示庫的問題:https://github.com/m90/firefox-webextension-issue
可能與[bugfix](https://bugzilla.mozilla.org/show_bug.cgi?id=1202481)(FF44)相關。也可以嘗試詢問[Mozilla插件開發論壇](https://discourse.mozilla-community.org/c/add-ons/development)。 – wOxxOm
好的,謝謝,也會試着在論壇上提問。 – m90