Ascolta i pulsanti extra del mouse nel browser


1

Vorrei utilizzare il pulsante aggiuntivo del mio mouse Logitech in un contesto Web.

Sono su Ubuntu (ma ci sono cose simili in altri sistemi operativi) e posso associare questi pulsanti con azioni del sistema operativo. -> Risposta per: Fare clic con il tasto destro del mouse su un evento Javascript?

Vorrei ascoltare questi pulsanti in javascript, come i normali pulsanti:

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

L'unica soluzione che vedo è un'estensione del browser e il passaggio di messaggi nativi , almeno su Chrome.

Quindi sto cercando un percorso più veloce!

Risposte:


1

Prima di tutto, questa è una domanda che probabilmente dovrebbe essere su StackOverflow piuttosto che qui.

Ma risponderò alla domanda, perché è spuntato su Google quando stavo cercando qualcosa di simile, quindi altri potrebbero chiedersi.

Esiste una specifica standard per rilevare fino a due pulsanti extra del mouse (a parte sinistra, centrale (ruota), destra).

Il problema è che non è ancora implementato da alcun browser, probabilmente perché potrebbe avere implicazioni per il "trapping" della truffa.

Nel eventoggetto che viene passato al gestore, c'è una .buttonsproprietà, che è una mappa di bit di cui sono spinti i pulsanti (per di più pulsanti in una sola volta).

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

Gli ultimi due non si registreranno in nessun browser oggi e non è possibile sovrascrivere gli eventi di browser e di browser in avanti, quindi cambierà la pagina se si fa clic su quei pulsanti (se sono impostati su quel comportamento).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.