在Firefox Web扩展中使用chrome.runtime.sendMessage不会产生响应
Using chrome.runtime.sendMessage does not yield a response in 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之间有什么我不知道的区别吗?从我在文档中看到的内容来看,应该完全支持runtime.sendMessage
API。
FWIW,这里有一个示例存储库演示了这个问题:https://github.com/m90/firefox-webextension-issue
这是WebExtension API中的一个已确认错误,因此对此没有太多可做的事情。
相关文章:
- 如何将getJson的响应保存在全局变量中
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 使用angularjs向浏览器发送servlet响应(下载功能)
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- 响应动画手风琴不工作
- 如何从SeleniumWebdriver获取异步Javascript响应
- Ajax调用在Firefox中不会自动响应
- 可以在响应时隐藏iphone上的“播放”按钮以进行视频播放
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 如何在 JavaScript 和 HTML 中更改对输入框的提示响应
- IIS动态HTTP响应标头
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Ajax响应转换
- 使Intro.js工具提示响应
- 存储$http如何从$http函数(Angularjs)外部获取可访问变量中的响应
- 将高图饼图中的文本居中显示为响应
- 在Firefox Web扩展中使用chrome.runtime.sendMessage不会产生响应
- Chrome扩展运行时.Sendmessage等待响应