Tabs Firefox插件SDK-如何使新选项卡中的页面只运行一次
我是Firefox插件SDK(高级API)的新手 我想做的是,如果用户单击工具栏上的图标,就会打开一个新选项卡,并运行contentscriptfile中定义的脚本 我使用以下脚本:Tabs Firefox插件SDK-如何使新选项卡中的页面只运行一次,tabs,firefox-addon-sdk,Tabs,Firefox Addon Sdk,我是Firefox插件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-
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
事件,而不是刚刚打开的选项卡。一种选择是这样做:
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
处理程序附加脚本。有关更多信息,请参阅此处的文档:问题在于您正在收听任何和所有选项卡的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
处理程序附加脚本。有关更多信息,请参阅以下文档:太棒了,它工作得很好!我花了一整天的时间,但找不到答案。你的帮助使我更容易和可靠。非常感谢!只是一些小玩意儿,如果我把“onOpen”改为“onReady”,它会不断重复发送请求。(在home.js中,我创建了一个表单,并用POST方法提交表单)。我只是想知道为什么会发生这种情况。我不确定我是否理解你的意思“它会不断重复发送请求”。什么会?home.js中的表单?我会谨慎对待onReady的行为,因为我没有看到它的文档。太棒了,它工作得很好!我花了一整天的时间,但找不到答案。你的帮助使我更容易和可靠。非常感谢!只是一些小玩意儿,如果我把“onOpen”改为“onReady”,它会不断重复发送请求。(在home.js中,我创建了一个表单,并用POST方法提交表单)。我只是想知道为什么会发生这种情况。我不确定我是否理解你的意思“它会不断重复发送请求”。什么会?home.js中的表单?我会对onReady的行为保持谨慎,因为我没有看到它的文档。