0

Я пытаюсь написать перекрестное расширение для браузера, который использует фоновый сценарий и всплывающее окно, которое кросс-общения:Использование 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

+1

Возможно, связано [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

+0

Хорошо, спасибо, попробуем спросить и на форуме. – m90

ответ

0

Это confirmed bug in the WebExtension API так что не так много, чтобы сделать.

+2

Возможно, стоит обновить, что ошибка теперь ПОСТАНОВИВАЕТСЯ ФИКСИРОВАН. – Xan