右键单击一个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根据默认的mousedown
和mouseup
事件生成自定义的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; 在函数内容的末尾。 谢谢。