当前位置:  开发笔记 > 编程语言 > 正文

是否右键单击Javascript事件?

如何解决《是否右键单击Javascript事件?》经验,为你挑选了4个好方法。

是否右键单击Javascript事件?如果是这样,我该如何使用它?



1> Andy E..:

正如其他人所提到的,可以通过常用的鼠标事件(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!");
} 

window.oncontextmenu - MDC


就像哪个/按钮问题一样,'oncontextmenu'在所有浏览器中的实现都不一样...请参阅http://www.quirksmode.org/dom/events/contextmenu.html以获取一些"陷阱".
在Chrome 59中,右键单击按钮触发`onmousedown`和`onmouseup`,但不触发`onclick`.显然,在Chrome中,只有左键单击才会触发"onclick".(是的,我多次测试过)为了检测右键单击,你必须要么"onmousedown"和"onmouseup"结合使用,要么使用`oncontextmenu`.
@AndyE嗨安迪,表达`(isRightMB?"不是":"")``应该是`(isRightMB?"是":"不是")".对 ?请帮忙查看一下.

2> Phil Rykoff..:

看看下面的jQuery代码:

$("#myId").mousedown(function(ev){
      if(ev.which == 3)
      {
            alert("Right mouse button clicked on element with id myId");
      }
});

价值which将是:

1表示左键

2为中间按钮

3为右键


Eeeew,太可怕了!为什么`.which`与`.button`不一样?Oo` .button` =>*0,1,2*; `which` =>*1,2,3*.那是错的.

3> Radi Cho..:

您可以使用该事件window.oncontextmenu,例如:

window.oncontextmenu = function () {
  alert('Right Click')
}

Please Right Click here!



4> Eric..:

雅,虽然w3c说点击事件可以检测到右键点击,但是在通常的浏览器中没有通过右击来触发onClick.

实际上,右键单击只触发onMouseDown onMouseUp和onContextMenu.

因此,您可以将"onContextMenu"视为右键单击事件.这是一个HTML5.0标准.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有