Ouça os botões extras do mouse no navegador

Ouça os botões extras do mouse no navegador

Gostaria de usar o botão extra do meu mouse Logitech em um contexto da web.

Estou no Ubuntu (mas há coisas semelhantes em outros sistemas operacionais) e posso vincular esses botões às ações do sistema operacional. ->Resposta para: Clicar com o botão direito é um evento Javascript?

Gostaria de ouvir esses botões em javascript, como botões normais:

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

A única solução que vejo é uma extensão do navegador epassagem de mensagem nativa, pelo menos no Chrome.

Então estou procurando um caminho mais rápido!

Responder1

Em primeiro lugar, esta é uma questão que provavelmente deveria estar no stackoverflow e não aqui.

Mas vou responder a pergunta, porque ela apareceu no google quando eu estava procurando algo parecido, para que outros possam se perguntar.

Existe uma especificação padrão para detectar até dois botões extras do mouse (além do esquerdo, do meio (roda), direito).

O problema é que ele ainda não foi implementado por nenhum navegador, provavelmente porque pode ter implicações na "armadilha" de fraudes.

No eventobjeto que é passado para o seu manipulador, há uma .buttonspropriedade, que é um mapa de bits de quais botões são pressionados (para vários botões ao mesmo tempo).

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

Os dois últimos não serão registrados em nenhum navegador hoje, e você não pode substituir os eventos de retorno e avanço do navegador, portanto, a página será alterada se você clicar nesses botões (se eles estiverem configurados para esse comportamento).

informação relacionada