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