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
Обратите внимание, что приведенный выше код предназначен для расширения Chrome, но должен работать для Fx с небольшими изменениями. Основная идея состоит в том, чтобы проверить, произойдет ли два клика в течение предопределенного периода времени (в данном случае четверть секунды). он делает это, это считается двойным щелчком, иначе это - единственный щелчок. –