我正在使用 Firefox Add-on Builder,这是我目前拥有的:
main.js:
var widgets = require("widget");
var tabs = require("tabs");
var data = require("self").data;
var widget = widgets.Widget({
id: "div-show",
label: "Show divs",
contentURL: "http://www.mozilla.org/favicon.ico",
onClick: function() {
tabs.activeTab.attach({
contentScriptFile: [data.url("jquery.js"), data.url("myScript.js")]
});
}
});
myScript.js
var first = $(".avatar:first");
var url = first.attr("href");
现在我一直在研究如何将 url 变量传递回 main.js,以便它可以在新选项卡中打开 url。在 myScript.js 中,我无权访问在 main.js 中声明的选项卡对象。
最佳答案
当然! attach 方法返回一个 worker 实例,您可以使用它来设置事件处理程序:
// main.js
var widgets = require("widget");
var tabs = require("tabs");
var data = require("self").data;
var widget = widgets.Widget({
id: "div-show",
label: "Show divs",
contentURL: "http://www.mozilla.org/favicon.ico",
onClick: function() {
var worker = tabs.activeTab.attach({
contentScriptFile: [data.url("jquery.js"), data.url("myScript.js")]
});
worker.port.on('got-url', function(data) {
tabs.open(data.url);
});
}
});
// myScript.js script:
var first = $(".avatar:first");
var url = first.attr("href");
self.port.emit('got-url', {url: url});
有关此的更多信息,请参阅附加方法的文档:
...以及内容脚本指南:
警告:尚未运行此代码,但它应该可以运行。
关于javascript - 附加生成器 : ContentScript and back to Addon code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9756907/