我想要阻止标准的上下文菜单,并手动处理右键点击事件。这该如何实现?
oncontextmenu
事件。<div oncontextmenu="javascript:alert('success!');return false;">
Lorem Ipsum
</div>
el.addEventListener('contextmenu', function(ev) {
ev.preventDefault();
alert('success!');
return false;
}, false);
不要忘记返回 false,否则标准上下文菜单仍然会弹出。
如果要使用自己编写的函数而不是 javascript:alert("Success!")
,请记得在函数和 oncontextmenu
属性中都返回 false。
var onMousedown = function (e) { if (e.which === 1) {/*左键*/ } else if (e.which === 3) {/*右键*/ } /*等等*/ }; clickArea.addEventListener("mousedown", onMousedown);
contextmenu监听器将允许右键点击事件通过。请记住,在Mac上,Firefox浏览器中,ctrl+右键单击将被视为左键单击,但是在Chrome浏览器中,ctrl+右键单击将被视为右键单击。 - N Dfalse
吗? - InsOpfalse
,跳过返回或返回 null 并不能防止任何事情的发生。 - jave.webreturn false
命令,则会允许右键单击,因此该命令的名称。 - RixTheTyrunt我认为你正在寻找类似于这样的东西:
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
}
参考http://www.quirksmode.org/js/events_properties.html,使用onmousedown事件来调用rightclick()函数(如果想要在整个页面上全局使用,可以这样做:<body onmousedown=rightclick(); >
)。
if ((e.which && e.which == 3) || (e.button && e.button == 2))
。 - Shea