Прослушивание дополнительных кнопок мыши в браузере

Прослушивание дополнительных кнопок мыши в браузере

Я хотел бы использовать дополнительную кнопку моей мыши Logitech в веб-контексте.

Я работаю на Ubuntu (но в других ОС есть похожие вещи), и я могу связать эти кнопки с действиями ОС. ->Ответ на вопрос: Является ли щелчок правой кнопкой мыши событием Javascript?

Я хотел бы прослушивать эти кнопки в JavaScript, как обычные кнопки:

element.addEventListener(function(evt){
  switch(evt.which){
    case 1: //left click
    case 2: //middle click
    case 3: //right click
    case XX: //other buttons clicks
  }
}

https://stackoverflow.com/a/2405857/1064270

Единственное решение, которое я вижу, это расширение для браузера ипередача собственных сообщений, по крайней мере в Chrome.

Поэтому я ищу более быстрый путь!

решение1

Прежде всего, этот вопрос, вероятно, следует задать на StackOverflow, а не здесь.

Но я отвечу на вопрос, потому что он всплыл в Google, когда я искал что-то похожее, так что другие могут задаться вопросом.

Существует стандартная спецификация для обнаружения до двух дополнительных кнопок мыши (помимо левой, средней (колесико), правой).

Проблема в том, что эта функция пока не реализована ни в одном браузере, вероятно, потому, что она может иметь последствия для «ловушки» мошенничества.

В eventобъекте, который передается вашему обработчику, есть .buttonsсвойство, представляющее собой битовую карту нажатых кнопок (для нескольких кнопок одновременно).

document.addEventListener('mousedown', function(ev) {
  console.log('MB1', ev.buttons & 1) // 1 if clicked, 0 if not
  console.log('MB2', ev.buttons & 2)
  console.log('MB3', ev.buttons & 4)
  console.log('MB4', ev.buttons & 8) // usually browser-back
  console.log('MB5', ev.buttons & 16)// usually browser-forward
})

Последние две кнопки сегодня не регистрируются ни в одном браузере, и вы не можете переопределить события браузера назад и браузера вперед, поэтому при нажатии этих кнопок страница изменится (если для них установлено такое поведение).

Связанный контент