Как запечатлеть событие двойного щелчка средней кнопки мыши(колесико) на JavaScript?

#javascript #html #dom-events #mouseevent #mousewheel

Вопрос:

Я хочу включить некоторую функцию после того, как пользователь дважды щелкнет колесиком мыши. Но я не могу запустить прослушиватель событий, когда дважды щелкаю колесиком мыши, и код, подобный этому, работает не так, как я ожидал:

https://developer.mozilla.org/en-US/docs/Web/API/Element/dblclick_event

 const card = document.querySelector('aside');

card.addEventListener('dblclick', function (e) {
  card.classList.toggle('large');
});
 

Это событие срабатывает только при нажатии на основной элемент.
Я не уверен, что это событие должно запускаться только при нажатии левой кнопки или при нажатии любой кнопки. Кто-нибудь может мне это объяснить?

Ответ №1:

Здесь вы можете использовать кнопку MouseEvent.

MouesEvent имеет следующие числовые представления:

 0: Main button pressed, usually the left button or the un-initialized state
1: Auxiliary button pressed, usually the wheel button or the middle button (if present)
2: Secondary button pressed, usually the right button
3: Fourth button, typically the Browser Back button
4: Fifth button, typically the Browser Forward button
 
 document.getElementById('aside').addEventListener('dblclick', function(e) {
  console.log(e.button);
  e.preventDefault();
}); 

Другой пример, если вы используете jQuery. У jQuery есть событие.какой атрибут, который, как и MouseEvent, присваивает следующие числовые представления:

 event.which also normalizes button presses (mousedown and mouseupevents), 
reporting 1 for left button, 2 for middle, and 3 for right. 
Use event.which instead of event.button.
 
 $(".aside").live('dblclick', function(e) { 
   if( e.which == 2 ) {
      alert("middle button"); 
   }
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>