右键单击 Javascript 事件吗?如果是这样,我该如何使用它?
右键单击 Javascript 事件吗?
IT技术
javascript
2021-01-21 02:41:19
6个回答
正如其他人提到的,鼠标右键可以通过通常的鼠标事件(mousedown、mouseup、click)来检测。但是,如果您要在出现右键单击菜单时查找触发事件,那么您就找错了地方。右键单击/上下文菜单也可以通过键盘访问(Windows 和某些 Linux 上的 shift+F10 或上下文菜单键)。在这种情况下,您要查找的事件是oncontextmenu
:
window.oncontextmenu = function ()
{
showCustomMenu();
return false; // cancel default menu
}
至于鼠标事件本身,浏览器将一个属性设置为可从事件处理函数访问的事件对象:
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!");
}
看看下面的jQuery代码:
$("#myId").mousedown(function(ev){
if(ev.which == 3)
{
alert("Right mouse button clicked on element with id myId");
}
});
which
will的值是:
- 1为左按钮
- 2中键
- 3为右键
您可以使用 event window.oncontextmenu
,例如:
window.oncontextmenu = function () {
alert('Right Click')
}
<h1>Please Right Click here!</h1>
如果要检测鼠标右键单击,则不应使用MouseEvent.which
属性,因为它是非标准的,并且浏览器之间存在很大的不兼容。(请参阅MDN)您应该改用MouseEvent.button
. 它返回一个代表给定按钮的数字:
0
: 主键按下,一般为左键或未初始化状态1
:按下的辅助按钮,通常是滚轮按钮或中间按钮(如果有)2
: 次要按钮按下,通常是右键3
:第四个按钮,通常是浏览器后退按钮4
:第五个按钮,通常是浏览器前进按钮
MouseEvent.button
处理比标准鼠标更多的输入类型:
按钮的配置可能与标准的“从左到右”布局不同。配置为左手使用的鼠标可能具有相反的按钮操作。一些指点设备只有一个按钮,并使用键盘或其他输入机制来指示主、次、辅助等。其他的可能有许多按钮映射到不同的功能和按钮值。
参考:
是的,虽然 w3c 说单击事件可以检测到右键单击,但在通常的浏览器中,不会通过右键单击来触发 onClick。
实际上,右键单击仅触发 onMouseDown onMouseUp 和 onContextMenu。
因此,您可以将“onContextMenu”视为右键单击事件。这是一个 HTML5.0 标准。
其它你可能感兴趣的问题