Я пытаюсь написать перекрестное расширение для браузера, который использует фоновый сценарий и всплывающее окно, которое кросс-общения:Использование chrome.runtime.sendMessage не дает ответ в Firefox Web Extension
в фоновом скрипте :
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, API-интерфейс runtime.sendMessage
должен быть полностью поддержан.
FWIW, вот пример демонстрирует вместилище вопрос: https://github.com/m90/firefox-webextension-issue
Возможно, связано [bugfix] (https://bugzilla.mozilla.org/show_bug.cgi?id=1202481) (FF44). Также попробуйте задать вопрос в [Mozilla addon dev forum] (https://discourse.mozilla-community.org/c/add-ons/development). – wOxxOm
Хорошо, спасибо, попробуем спросить и на форуме. – m90