Событие
dblclick
срабатывает после двух событий щелчка и после двух пар событий mousedown
и mouseup
.
Обычно мы видим такой случай, когда, например, выбираем / фокусируем файл одним щелкните, а затем запустите файл двойным щелчком. Нет ничего плохого в том, чтобы выбрать один и тот же файл несколько раз.
Если вам нужно различать guish эти два события, вы можете отложить обработку одного щелчка до тех пор, пока не убедитесь, что он не является частью двойного щелкните, но это добавит задержку в обработке.
let clicks = 0;
let clickTimer = 0;
const dblClickTimeSpan = 300;
const clickHandler = (e) => {
clicks++;
if(clicks === 1) {
clickTimer = setTimeout(()=>{
clicks = 0;
// handle single click, now we are sure it is not a bouble click
console.log('Single Click.')
}, dblClickTimeSpan);
}
if(clicks === 2) {
// it is the second click in double-click event
clearTimeout(clickTimer);
clicks = 0;
}
}
myButton.addEventListener('click', clickHandler);
myButton.addEventListener('dblclick', (e) => console.log('Double Click.'));
<button id="myButton">Button</button>