Firefox addon Can';t在内容脚本中从main.js接收端口消息

Firefox addon Can';t在内容脚本中从main.js接收端口消息,firefox-addon,firefox-addon-sdk,Firefox Addon,Firefox Addon Sdk,我正在尝试通过端口将消息从my main.js发送到面板的内容脚本。我已经尝试了很多事情,但都不走运,不过从内容脚本向main.js发送消息效果很好 下面是my main.js的外观: var data = require("self").data; var setting = require("panel").Panel({ width: 250, height: 130, contentURL: data.url("www.google.com"), contentScrip

我正在尝试通过端口将消息从my main.js发送到面板的内容脚本。我已经尝试了很多事情,但都不走运,不过从内容脚本向main.js发送消息效果很好

下面是my main.js的外观:

var data = require("self").data;
var setting = require("panel").Panel({
  width: 250,
  height: 130,
  contentURL: data.url("www.google.com"),
  contentScriptFile: data.url("script.js")
});
require("widget").Widget({
  id: "sorter1",
  label: "Search Result Sorting",
  contentURL: data.url("icon.ico"),
  panel: setting
});
setting.port.emit("message");
这是我的内容脚本:

self.on("message", function(addonMessage) {
  document.innerHTML = "Got Message"
});

[更新]抱歉,我没有完全阅读代码

首先,您实际上需要向面板发送一条消息,例如

setting.port.emit('message', someData);
第二部分:我想你想要:

self.port.on("message", function(addonMessage) {
    document.innerHTML = "Got Message"
});
相关文件如下:


[Update]对不起,我没有完全阅读代码

首先,您实际上需要向面板发送一条消息,例如

setting.port.emit('message', someData);
第二部分:我想你想要:

self.port.on("message", function(addonMessage) {
    document.innerHTML = "Got Message"
});
相关文件如下:


我几天前就知道了,只是没有时间在这里发布

使用面板时要记住的几点:

  • 面板页面在加载扩展时加载,而不是在显示扩展时加载
  • 显示面板页面时,面板页面的内容脚本将注入面板页面。(当contentScriptWhen属性为默认值时)
  • 内容脚本无权访问附加SDK资源
我就是这样实现的

在main.js中

panel.on("show", function() {
     panel.port.emit("message");
});
面板内内容脚本

self.port.on("message", function() {
    //doThings
});
emit()不需要第二个参数,尽管第二个参数是将传递给内容脚本的参数

function(secondArg) {
}

我在几天前就知道了,只是没有时间在这里发布

使用面板时要记住的几点:

  • 面板页面在加载扩展时加载,而不是在显示扩展时加载
  • 显示面板页面时,面板页面的内容脚本将注入面板页面。(当contentScriptWhen属性为默认值时)
  • 内容脚本无权访问附加SDK资源
我就是这样实现的

在main.js中

panel.on("show", function() {
     panel.port.emit("message");
});
面板内内容脚本

self.port.on("message", function() {
    //doThings
});
emit()不需要第二个参数,尽管第二个参数是将传递给内容脚本的参数

function(secondArg) {
}

您还必须将contentURL更改为
”http://www.google.com“
data.url为加载项的数据目录下存储的文件返回一种特殊形式的url。您还必须将contentURL更改为
”http://www.google.com"
data.url为插件数据目录下存储的文件返回一种特殊形式的url。