如何在JavaScript中捕获右键单击事件?

Gif*_*guy 218 html javascript events event-handling javascript-events

我想阻止标准上下文菜单,并手动处理右键单击事件.

这是怎么做到的?

Cha*_*ase 313

使用该oncontextmenu活动.

这是一个例子:

<div oncontextmenu="javascript:alert('success!');return false;">
    Lorem Ipsum
</div>
Run Code Online (Sandbox Code Playgroud)

并使用事件监听器:

el.addEventListener('contextmenu', function(ev) {
    ev.preventDefault();
    alert('success!');
    return false;
}, false);
Run Code Online (Sandbox Code Playgroud)

不要忘记返回false,否则标准上下文菜单仍会弹出.

如果你打算使用你编写的函数而不是javascript:alert("Success!"),请记住在函数和oncontextmenu属性中返回false .

  • 使用事件监听器:`elt.addEventListener('contextmenu',function(ev){ev.preventDefault(); alert('success!'); return false;},false); ` (57认同)
  • 这只会处理右键单击.如果你想为所有类型的点击一个事件处理程序,结合使用上面的代码如下:`VAR onmousedown事件=功能(E){如果(e.which === 1){/*鼠标左键*/}其他if(e.which === 3){/*Right Mouse*/} /*etc.*/}; clickArea.addEventListener("mousedown",onMousedown); `contextmenu监听器将允许右键单击事件.请记住,在Mac FF*ctrl + rightclick*将通过鼠标左键单击,但在Mac Chrome*ctrl + rightclick*将通过鼠标右键单击. (6认同)

cyb*_*ard 31

我认为你正在寻找这样的东西:

   function rightclick() {
    var rightclick;
    var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    alert(rightclick); // true or false, you can trap right click here by if comparison
}
Run Code Online (Sandbox Code Playgroud)

(http://www.quirksmode.org/js/events_properties.html)

然后使用onmousedown甚至使用函数rightclick()(如果你想在整个页面上全局使用它,你可以这样做 <body onmousedown=rightclick(); >

  • 或者只是(e.which === 3 || e.button === 2) (9认同)
  • 我认为你的意思是`if((e.which && e.which == 3)||(e.button && e.button == 2))`. (3认同)