Firefox Addon SDK - 如何在新标签页中制作页面 运行 一次
Firefox Addon SDK - how to make page in new tabs run only once
我是 Firefox Addon SDK 的新手,高级 API。
我想做的是,如果用户单击工具栏上的图标,将打开一个新选项卡,并且 运行 contentscriptfile 中定义的脚本。
我使用下面的脚本:
var self = require("sdk/self");
var tabs = require("sdk/tabs");
var buttons = require('sdk/ui/button/action');
var button = buttons.ActionButton({
id: "mm-link",
label: "Visit mm",
icon: {
"32": "./icon-32.png",
"64": "./icon-64.png"
},
onClick: handleClick
});
function handleClick(state) {
tabs.open("about:blank");
tabs.on('ready', function (tab) {
tab.attach({
contentScriptFile: self.data.url("home.js"),
contentScriptOptions: {"aaa" : "1111", "bob" : "222"}
});
});
}
但是没有达到预期效果,存在以下问题:
- 脚本 运行 重复。 (我只希望在每个新标签页上 运行 一次)
- 即使我点击“+”图标来创建一个新标签,脚本也会
运行。 (单击我在工具栏上创建的图标时,我只想要它 运行)
我也试过把'ready'改成'activiate',重复的运行ning问题没有了,但是每次创建tab,脚本都会运行.
非常感谢任何帮助。
问题是您正在监听所有选项卡的 ready
事件,而不是刚刚打开的选项卡。一种选择是做这样的事情:
function handleClick(state) {
tabs.open({
url: "about:blank",
onOpen: function onOpen(tab) {
tab.attach({
contentScriptFile: self.data.url("home.js"),
contentScriptOptions: {"aaa" : "1111", "bob" : "222"}
});
}
});
}
并使用 onOpen
处理程序附加脚本。有关更多信息,请访问文档:https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/tabs#open%28options%29
我是 Firefox Addon SDK 的新手,高级 API。
我想做的是,如果用户单击工具栏上的图标,将打开一个新选项卡,并且 运行 contentscriptfile 中定义的脚本。
我使用下面的脚本:
var self = require("sdk/self");
var tabs = require("sdk/tabs");
var buttons = require('sdk/ui/button/action');
var button = buttons.ActionButton({
id: "mm-link",
label: "Visit mm",
icon: {
"32": "./icon-32.png",
"64": "./icon-64.png"
},
onClick: handleClick
});
function handleClick(state) {
tabs.open("about:blank");
tabs.on('ready', function (tab) {
tab.attach({
contentScriptFile: self.data.url("home.js"),
contentScriptOptions: {"aaa" : "1111", "bob" : "222"}
});
});
}
但是没有达到预期效果,存在以下问题:
- 脚本 运行 重复。 (我只希望在每个新标签页上 运行 一次)
- 即使我点击“+”图标来创建一个新标签,脚本也会 运行。 (单击我在工具栏上创建的图标时,我只想要它 运行)
我也试过把'ready'改成'activiate',重复的运行ning问题没有了,但是每次创建tab,脚本都会运行.
非常感谢任何帮助。
问题是您正在监听所有选项卡的 ready
事件,而不是刚刚打开的选项卡。一种选择是做这样的事情:
function handleClick(state) {
tabs.open({
url: "about:blank",
onOpen: function onOpen(tab) {
tab.attach({
contentScriptFile: self.data.url("home.js"),
contentScriptOptions: {"aaa" : "1111", "bob" : "222"}
});
}
});
}
并使用 onOpen
处理程序附加脚本。有关更多信息,请访问文档:https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/tabs#open%28options%29