我想从内容脚本运行插件函数[main.js] .i阅读firefox文档,但它不适用于我。这是关于脚本之间通信的官方文档https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts/using_port
这是我的main.js代码
var tabs = require("sdk/tabs");
var data = require("sdk/self").data;
var pageMod = require("sdk/page-mod");
pageMod.PageMod({
include: "http://mydomain/x.html",
contentScriptFile: data.url("listen.js")
});
self.port.on("myAddonMessage", function(myAddonMessagePayload) {
console.log("working");
});
这是我的listen.js内容脚本
var myContentScriptMessagePayload="hi";
self.port.emit("myContentScriptMessage", myContentScriptMessagePayload);
实际上我期待console.log(“工作”);这个输出。但是它没有用。可能有人帮助我,我真的很困惑..我实际上想从listen.js调用main.js函数。
答案 0 :(得分:2)
main.js
没有self.port
,内容脚本可以。在main.js
中,您需要使用端口来启动内容脚本。例如。 PageMod
documentation有更多。
var data = require("sdk/self").data;
var pageMod = require("sdk/page-mod");
pageMod.PageMod({
include: "http://mydomain/x.html",
contentScriptFile: data.url("listen.js"),
onAttach: function(worker) {
worker.port.on("myAddonMessage", function(myAddonMessagePayload) {
console.log("working");
});
}
});