1
我是Firefox Addon SDK,高级API的新手。Firefox Addon SDK - 如何使新页面中的页面只运行一次
我想这样做,如果用户单击工具栏上的图标,打开一个新选项卡,然后运行在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"}
});
});
}
但预期它不工作,并具有下列问题:
- 脚本重复运行。 (我希望它在每个新标签上只运行一次)
- 即使我点击“+”图标创建一个新选项卡,脚本将会运行 。 (我想它只是点击我的工具栏上创建的图标时运行)
我也试图改变“准备”到“activiate”,反复运行的问题消失了,但每次我创建的标签,脚本将运行。
非常感谢任何帮助。
真棒,它运作良好!它花了我整整一天,但无法找到答案。你的帮助使我更容易和可靠。非常感谢! – user1748640
只是好奇心,如果我将“onOpen”更改为“onReady”,它会不断发送请求。 (在home.js中,我创建了一个表单,并通过POST方法提交表单)。只是想知道为什么会发生。 – user1748640
我不确定我明白你的意思是“它会不断发送请求”。会怎样?在home.js中的表单?我对“onReady”的行为持谨慎态度,因为我没有看到它的记录。 – winhowes