Clique com o botão direito do mouse em um evento Javascript? Se sim, como eu o uso?
fonte
Clique com o botão direito do mouse em um evento Javascript? Se sim, como eu o uso?
Como outros já mencionaram, o botão direito do mouse pode ser detectado através dos eventos usuais do mouse (redução do mouse, mouseup, clique) . No entanto, se você estiver procurando por um evento de disparo quando o menu do botão direito for exibido, estará no lugar errado. O botão direito do mouse / menu de contexto também é acessível através do teclado (shift + F10 ou tecla de menu de contexto no Windows e em alguns Linux). Nessa situação, o evento que você está procurando é oncontextmenu
:
window.oncontextmenu = function ()
{
showCustomMenu();
return false; // cancel default menu
}
Quanto aos próprios eventos do mouse, os navegadores configuram uma propriedade para o objeto de evento que é acessível a partir da função de manipulação de eventos:
document.body.onclick = function (e) {
var isRightMB;
e = e || window.event;
if ("which" in e) // Gecko (Firefox), WebKit (Safari/Chrome) & Opera
isRightMB = e.which == 3;
else if ("button" in e) // IE, Opera
isRightMB = e.button == 2;
alert("Right mouse button " + (isRightMB ? "" : " was not") + "clicked!");
}
(isRightMB?"was not" : "")
deve ser(isRightMB?"was" : "was not")
. Certo ? Por favor, ajude a analisá-lo.onmousedown
eonmouseup
, mas nãoonclick
. Aparentemente, no Chrome,onclick
é acionado apenas para o botão esquerdo do mouse. (e sim pessoal, eu testei isso várias vezes) Para detectar um clique com o botão direito do mouse, você precisa combinaronmousedown
eonmouseup
/ ou usaroncontextmenu
.dê uma olhada no seguinte código jQuery:
O valor de
which
será:fonte
.which
não é o mesmo que.button
? Oo.button
=> 0,1,2 ;which
=> 1,2,3 . isso está errado.Você pode usar o evento
window.oncontextmenu
, por exemplo:fonte
window.oncontextmenu = function () { e.preventDefault() }
não funcionou.Sim, embora o w3c diga que o clique direito pode ser detectado pelo evento click, onClick não é acionado através do clique direito nos navegadores comuns.
De fato, clique com o botão direito apenas no gatilho onMouseDown onMouseUp e onContextMenu.
Assim, você pode considerar "onContextMenu" como o evento do botão direito. É um padrão HTML5.0.
fonte
Se você deseja detectar o clique direito do mouse, não deve usar a
MouseEvent.which
propriedade, pois ela não é padrão e há grande incompatibilidade entre os navegadores. (consulte MDN ) Você deve usarMouseEvent.button
. Retorna um número representando um determinado botão:0
: Botão principal pressionado, geralmente o botão esquerdo ou o estado não inicializado1
: Botão auxiliar pressionado, geralmente o botão do volante ou o botão do meio (se houver)2
: Botão secundário pressionado, geralmente o botão direito3
: Quarto botão, geralmente o botão Voltar do navegador4
: Quinto botão, geralmente o botão Avançar no navegadorMouseEvent.button
lida com mais tipos de entrada do que apenas o mouse padrão:Referência:
fonte
Não, mas você pode detectar qual botão do mouse foi usado no evento "onmousedown" ... e a partir daí determinar se foi um "clique com o botão direito".
fonte
onmousedown
,onmouseup
eonclick
. Se você deseja substituir o menu do botão direito, no entanto, esses eventos não são o que você deveria usar (veja minha resposta abaixo).O código a seguir está usando o jQuery para gerar um
rightclick
evento personalizado com base no padrãomousedown
e nosmouseup
eventos. Considera os seguintes pontos:contextmenu
evento não é acionado lá)on('contextmenu', ...)
fazfonte
Sim, ele é!
fonte
elem.addEventListener("click", doSomething)
Sim, o oncontextmenu é provavelmente a melhor alternativa, mas saiba que ele é acionado com o mouse pressionado, enquanto o clique é acionado com o mouse para cima.
Outras questões relacionadas estavam perguntando sobre o clique duplo direito - o que aparentemente não é suportado, exceto pela verificação manual do timer. Um motivo pelo qual você pode querer clicar duas vezes com o botão direito do mouse é se você precisa / deseja oferecer suporte à entrada canhota do mouse (inversão de botão). As implementações do navegador parecem fazer muitas suposições sobre como deveríamos usar os dispositivos de entrada disponíveis.
fonte
A maneira mais fácil de fazer o clique direito é usar
No entanto, essa não é uma solução entre navegadores, os navegadores se comportam de maneira diferente para esse evento, especialmente o Firefox e o IE. Eu recomendaria abaixo para uma solução entre navegadores
fonte
Essa é a maneira mais fácil de acioná-lo e funciona em todos os navegadores, exceto nas visualizações da web do aplicativo como (CefSharp Chromium etc ...). Espero que meu código o ajude e boa sorte!
fonte
fonte
Se você deseja chamar a função enquanto o evento do botão direito significa que podemos usar os seguintes
fonte
Isso é trabalhado comigo
fonte
Tente usar a propriedade
which
e / oubutton
A demo
Algumas informações aqui
fonte
Manipular evento usando a
jQuery
bibliotecafonte
Para manipular o botão direito do mouse, você pode usar o evento 'oncontextmenu'. Abaixo está um exemplo:
o código acima alerta algum texto quando o botão direito é pressionado. Se você não deseja que o menu padrão do navegador apareça, adicione return false; No final do conteúdo da função. Obrigado.
fonte
Sim, é um evento de remoção de javascript. Também existe um plugin jQuery para fazer isso
fonte