【发布时间】:2015-04-01 01:11:46
【问题描述】:
在我的 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);
我的最终目标是在插件启动时打开的所有选项卡以及之后打开的所有选项卡上运行内容脚本。目前我只是在活动选项卡上运行它,然后所有打开的选项卡。
当我运行插件时,控制台会记录“设置”和“运行”,还会记录我在初始窗口中所做的任何按键操作,这是预期的行为。但是,当我打开新标签时,打开的第一个新标签将同时记录“设置”和“运行”,但它们不会记录任何按键。之后的每个新标签都会记录“设置”、“运行”和按键。
我注意到 Firefox 的 Add-on SDK 版本每次都像全新安装一样运行,并且第一个打开的新选项卡(并且只有这个选项卡)会弹出一个“这是什么页面?”信息。这可能会以某种方式干扰,但如果是这样,我不知道如何规避它。
【问题讨论】:
标签: firefox-addon firefox-addon-sdk