#javascript #firefox #firefox-addon #firefox-addon-sdk
#javascript #firefox #firefox-addon #firefox-addon-sdk
Вопрос:
я хочу запустить функцию addon[main.js ] из content script . я читал документы 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 («работает»); этот вывод . но это не работает. может кто-нибудь мне помочь, я действительно запутался здесь .. я на самом деле хочу вызвать main.js функция из listen.js .
Ответ №1:
main.js
не имеет self.port
, у content-скриптов есть. В main.js
вместо этого вам нужно использовать порт с тем, что инициировало content-script. Например. в PageMod
документации есть больше.
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");
});
}
});