0

我想写使用背景剧本和一个弹出窗口,跨通信的跨浏览器扩展的响应:使用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

+1

可能与[bugfix](https://bugzilla.mozilla.org/show_bug.cgi?id=1202481)(FF44)相关。也可以尝试询问[Mozilla插件开发论坛](https://discourse.mozilla-community.org/c/add-ons/development)。 – wOxxOm

+0

好的,谢谢,也会试着在论坛上提问。 – m90

回答