Двойное нажатие по browserAction

186
31 мая 2018, 11:10

Появилась идея сделать 2йное нажатие по кнопке на панели инструментов, но или моих знаний не хватает или это вообще не реально. То есть добавляется кнопка и добавляется listener на onclicked.

browser.browserAction.onClicked.addListener(() => console.log('test'));

Понятно, что каждое нажатие вызывается со своим контекстом, но мб есть способ как то перехватить или отследить, что было уже нажато. Например: при первом нажатии переменная какая то в true ставится и таймер на 1 секунду, если 2го нажатия нет, то выполняется 1 вариант, а если нажимается 2й раз, то выполняется 2й вариант. или через глобальную типа:

let isPressed = false;
browser.browserAction.onClicked.addListener(() => {
    if(isPressed){
       console.log('action2');
        isPressed = false;
    } else {
        isPressed = true;
        setTimeout(() =>{
            console.log('action1');
            isPressed = false;
        },1000);
    }
})

но тут как то отменить предыдущие нужно нажатие тк оно сработает через 1сек.

Answer 1

Вот так можно сделать симуляцию двойного клика.

var isPressed = false; 
var timeoutID = null; 
btn.addEventListener('click', () => { 
  if (isPressed) { 
    clearTimeout(timeoutID); 
    timeoutID = null; 
    isPressed = false; 
    console.log('dblclick'); 
  } else { 
    isPressed = true; 
    clearTimeout(timeoutID); 
    timeoutID = setTimeout(() => { 
      isPressed = false; 
      timeoutID = null; 
    }, 500); 
  } 
});
<button id="btn">dblclick</button>

READ ALSO
Как добавить в таблицу jscrollpane

Как добавить в таблицу jscrollpane

Кто знает в чем проблема? Хочу сочетать таблицу и jscrollpane, когда начинаю использовать этот плагин все ломает, не получается зафиксировать theadКто...

182