Javascript 如何使用";在main.js中侦听消息;浏览器操作jplib";

Javascript 如何使用";在main.js中侦听消息;浏览器操作jplib";,javascript,firefox-addon,firefox-addon-sdk,content-script,browser-action,Javascript,Firefox Addon,Firefox Addon Sdk,Content Script,Browser Action,我在他的回答中读到了关于自由党的内容,这正是我所需要的 我正在使用他的库创建徽章: var badge = require("browserAction").BrowserAction({ default_icon: data.url("images/icon19.png"), default_title: "MyAddon", default_popup: data.url("pages/popup.html") }); 弹出窗口将通过his与main联系,并将发送

我在他的回答中读到了关于自由党的内容,这正是我所需要的

我正在使用他的库创建徽章:

var badge = require("browserAction").BrowserAction({
    default_icon:  data.url("images/icon19.png"),
    default_title: "MyAddon",
    default_popup: data.url("pages/popup.html")
});
弹出窗口将通过his与main联系,并将发送回调函数。因此,我正在main.js中打开消息通道:

我的问题:我需要在
createMessageChannel(选项,**此处**)
中使用哪个端口?

当我使用
badge.port
self.port
时,总是会出现错误
端口未定义
,您不需要自己创建消息通道

我已经将
onMessage.addListener
sendMessage
方法添加到了。只需阅读文档(使用
cfx sdocs
from生成)

按如下方式使用:

const{data}=require(“sdk/self”);
var badge=需要(“browserAction”)。browserAction({
默认图标:data.url(“images/icon19.png”),
默认标题:“MyAddon”,
默认弹出窗口:data.url(“pages/popup.html”)
});
badge.onMessage.addListener(函数(消息、发送者、sendResponse){
如果(消息==“测试”){
发送响应(“收到测试”);
}
});
出于示例的考虑,弹出窗口中的JavaScript代码最少:

extension.sendMessage(“测试”,函数(消息){
document.body.textContent=消息;
});
const { createMessageChannel } = require('messaging');
var options = {channelName:"PopUpMessageChannel", endAtPage: false};
var extension = createMessageChannel(options, badge.port);
extension.onMessage.addListener(function(message, sender, sendResponse) {
    if (message === 'test') {
        sendResponse("Test recieved");
    }
});