我正在尝试为Firefox开发一个简单的附加组件,它应该是这样的:
此外,内容脚本只应执行一次,因此如果用户在新标签页中输入网站,则不应执行脚本。
我已经开始编辑新标签内容,但我唯一的问题是在打开标签页时只运行一次内容脚本。在我每次在选项卡中加载页面时脚本运行的代码中:
var contextMenu = require("sdk/context-menu");
var tabs = require("sdk/tabs");
var menuItem = contextMenu.Item({
label: "Test",
contentScript: 'self.on("click", function () { self.postMessage(); })',
onMessage: function (data) {
newTab();
}
});
function newTab () {
tabs.open("about:blank");
tabs.activeTab.on('ready', function (tab) {
tab.attach({
contentScript: 'document.body.innerHTML = "testing";'
});
});
}
我猜测只有在第一次选项卡准备就绪时才能运行此方法"。看起来像一个简单的任务,但我无法弄清楚如何做到这一点。有人有任何提示吗?
答案 0 :(得分:0)
使用tabs.activeTab.once();
代替tabs.activeTab.on();
。
这样,一旦拦截了第一条消息,侦听器就会被分离。