ActionButton本身没有onDoubleClick
处理程序。所以,你需要做一些技巧来实现你想要的功能。
您可以为第一次单击指定处理程序,并在此处理程序中删除自身并为双击定义一个新处理程序,如以下代码所示。
index.js:
var tabs = require("sdk/tabs");
var { ActionButton } = require("sdk/ui/button/action");
var { setTimeout } = require("sdk/timers");
var button = ActionButton({
id: "my-button",
label: "my button",
icon: {
"16": "./icon-16.png",
"32": "./icon-32.png",
"64": "./icon-64.png"
},
onClick: firstClick
});
function firstClick(state) {
button.removeListener("click", firstClick);
button.on("click", subsequentClicks);
tabs.activeTab.url = "http://www.mozilla.org/";
tabs.activeTab.reload();
setTimeout(function() {
console.log("remove double click after an interval");
button.removeListener("click", subsequentClicks);
button.on("click", firstClick);
}, 1000);
}
function subsequentClicks(state) {
button.removeListener("click", subsequentClicks);
tabs.activeTab.url = "http://www.google.com/";
tabs.activeTab.reload();
}
另一个技巧是在firstClick
处理程序内部定义了一个 setTimeout 函数,以在 1 秒的时间间隔后将事物恢复为第一次单击的初始状态。
为了确保subsequentClicks
执行时的功能,它将自己作为侦听器撤消。
正如评论中提到的那样,问题在于双击它时首先加载 mozilla.org 然后 google.com