Escuche los botones adicionales del mouse en el navegador

Escuche los botones adicionales del mouse en el navegador

Me gustaría utilizar un botón adicional de mi mouse Logitech en un contexto web.

Estoy en Ubuntu (pero hay cosas similares en otros sistemas operativos) y puedo vincular estos botones con acciones del sistema operativo. ->Respuesta para: ¿El clic derecho es un evento de Javascript?

Me gustaría escuchar estos botones en javascript, como los botones normales:

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

La única solución que veo es una extensión del navegador ypaso de mensajes nativos, al menos en Chrome.

¡Así que estoy buscando un camino más rápido!

Respuesta1

En primer lugar, esta es una pregunta que probablemente debería estar en stackoverflow en lugar de aquí.

Pero responderé la pregunta, porque apareció en Google cuando estaba buscando algo similar, por lo que otros podrían preguntarse.

Existe una especificación estándar para detectar hasta dos botones adicionales del mouse (aparte del izquierdo, central (rueda) y derecho).

El problema es que ningún navegador todavía lo ha implementado, probablemente porque puede tener implicaciones para la "captura" de estafas.

En el eventobjeto que se pasa a su controlador, hay una .buttonspropiedad, que es un mapa de bits de qué botones se presionan (para varios botones a la vez).

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
})

Los dos últimos no se registrarán en ningún navegador hoy, y no puede anular los eventos de retroceso y avance del navegador, por lo que cambiará la página si hace clic en esos botones (si están configurados para ese comportamiento).

información relacionada