右键单击一个Javascript事件?

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

正如其他人所说,鼠标右键可以通过通常的鼠标事件(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

看看下面的jQuery代码:

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

其价值将是:

  • 1为左键
  • 2为中间button
  • 3为正确的button

我的答案是window.oncontextmenu ,例如:

 window.oncontextmenu = function () { alert('Right Click') } 
 <h1>Please Right Click here!</h1> 

雅,虽然w3c说,点击事件可以检测到右键点击,onClick不是通过在普通的浏览器中右键点击触发。

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

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

不,但您可以检测“onmousedown”事件中使用的鼠标button,并从那里确定是否是“右键单击”。

以下代码使用jQuery根据默认的mousedownmouseup事件生成自定义的rightclick事件。 它考虑以下几点:

  • 触发mouseup
  • 只有在按下之前触发相同的元素才会触发
  • 这段代码特别适用于JFX Webview(因为contextmenu事件在那里没有被触发)
  • 当键盘上的上下文菜单键被按下时,它不会触发(就像on('contextmenu', ...)
 $(function () { // global rightclick handler - trigger custom event "rightclick" var mouseDownElements = []; $(document).on('mousedown', '*', function(event) { if (event.which == 3) { mouseDownElements.push(this); } }); $(document).on('mouseup', '*', function(event) { if (event.which == 3 && mouseDownElements.indexOf(this) >= 0) { $(this).trigger('rightclick'); } }); $(document).on('mouseup', function() { mouseDownElements.length = 0; }); // disable contextmenu $(document).on('contextmenu', function(event) { event.preventDefault(); }); }); // Usage: $('#testButton').on('rightclick', function(event) { alert('this was a rightclick'); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button id="testButton">Rightclick me</button> 

是的!

 function doSomething(e) { var rightclick; if (!e) var e = window.event; if (e.which) rightclick = (e.which == 3); else if (e.button) rightclick = (e.button == 2); alert('Rightclick: ' + rightclick); // true or false } 

是的,oncontextmenu可能是最好的select,但要注意,它会触发鼠标,而点击会触发鼠标。

其他相关的问题是关于双击右键的问题 – 除了通过手动定时器检查,显然不支持。 你可能希望能够右键双击的一个原因是如果你需要/想要支持左手鼠标input(button反转)。 浏览器的实现似乎对如何使用可用的input设备做了很多的假设。

使用jQuery库处理事件

 $(window).on("contextmenu", function(e) { alert("Right click"); }) 

如果你想调用的function,而右键单击事件意味着我们可以使用以下

  <html lang="en" oncontextmenu="func(); return false;"> </html> <script> function func(){ alert("Yes"); } </script> 

最简单的方法就是使用右键单击

  $('classx').on('contextmenu', function (event) { }); 

然而这不是跨浏览器的解决scheme,浏览器对于这个事件特别是Firefox和IE的行为是不同的。 我会在下面推荐一个跨浏览器的解决scheme

 $('classx').on('mousedown', function (event) { var keycode = ( event.keyCode ? event.keyCode : event.which ); if (keycode === 3) { //your right click code goes here } }); 

是的,它是一个javascript mousedown事件。 还有一个jQuery 插件来做到这一点

要处理鼠标右键单击,可以使用“oncontextmenu”事件。 下面是一个例子:

  document.body.oncontextmenu=function(event) { alert(" Right click! "); }; 

上面的代码在按下右键时提醒一些文本。 如果你不想让浏览器的默认菜单出现,你可以添加返回false; 在函数内容的末尾。 谢谢。