在我的Firefox SDK插件中,我有一个简单的内容脚本,它将keydown事件监听器添加到其页面并记录事件:
//content-script.js
console.log("Running");
window.addEventListener("keydown", function(event) {
console.log("Key down event");
});
window.focus();
我已经编写了一个函数来在main.js中设置这种行为:
//main.js
function setupTab(tab) {
console.log("setup");
tab.attach({
contentScriptFile: "./content-script.js"
});
}
tabs.on("open", function(tab) {
setupTab(tab);
});
setupTab(tabs.activeTab);
我的最终目标是在加载项启动时打开的所有选项卡上运行内容脚本,以及之后打开的所有选项卡。目前我只是在活动标签上运行它以及随后打开的所有标签。
当我运行加载项时,控制台会记录" setup"和"跑步"并记录我在初始窗口中所做的任何按键操作,这是预期的行为。但是,当我打开新选项卡时,第一个打开的新选项卡将同时记录" setup"和"跑步"但他们不会记录任何按键。之后的每个新标签都会记录"设置","运行"和按键。
我注意到Firefox的附加SDK版本每次都像新安装一样运行,第一个新标签打开(只有这个标签)弹出一个"这是什么页面?&#34 ;信息。这可能会以某种方式干扰,但如果是这样,我就不知道如何规避它。
答案 0 :(得分:1)
我怀疑你想要的行为是在每个活动标签上。所以代码可能是这样的:
//main.js
var tabs = require("sdk/tabs");
tabs.on('ready', function (tab) {
tabs.activeTab.attach({
contentScriptFile: "./content-script.js"
})
});