右键单击是Javascript事件吗?

右键单击是Javascript事件吗?,javascript,Javascript,右键单击是Javascript事件吗?如果是,我该如何使用它?是的-是的 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: ' + rightcl

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

是的-是的

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
}

没有,但您可以检测“onmousedown”事件中使用的鼠标按钮。。。然后从中确定是否是“右键单击”。

是的,这是一个javascript鼠标向下事件。还有一个jQuery也可以这样做

正如其他人所提到的,可以检测到鼠标右键。但是,如果您在右键单击菜单打开时正在查找触发事件,则您查找的位置是错误的。右键单击/上下文菜单也可以通过键盘访问(shift+F10或Windows和某些Linux上的上下文菜单键)。在这种情况下,您要查找的事件是
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");
      }
});
的值将是:

  • 1用于左按钮
  • 2用于中间按钮
  • 3用于右键

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

事实上,右键单击只能触发onMouseDown onMouseUp和oncontext菜单


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

使用
jQuery
库处理事件

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

是的,oncontextmenu可能是最好的选择,但请注意,它会在鼠标按下时触发,而单击会在鼠标向上时触发


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

您可以使用事件
窗口。oncontextmenu
,例如:

window.oncontextmenu=函数(){
警报('右键单击')
}

请右键点击这里以下代码使用jQuery根据默认的
mousedown
mouseup
事件生成自定义的
rightclick
事件。 它考虑了以下几点:

  • 鼠标上的触发器
  • 仅当之前在同一元素上按下鼠标向下键时触发
  • 此代码在JFX Webview中也特别有效(因为在JFX Webview中不会触发
    contextmenu
    事件)
  • 当按下键盘上的contextmenu键时,它不会触发(就像打开
    ('contextmenu',…)的解决方案一样)
    会触发
$(函数()
{//全局右击处理程序-触发自定义事件“右击”
var mousedownements=[];
$(文档).on('mousedown','*',函数(事件)
{
if(event.which==3)
{
mousedownements.推(这个);
}
});
$(文档).on('mouseup','*',函数(事件)
{
if(event.which==3&&mousedownements.indexOf(this)>=0)
{
$(this.trigger('rightclick');
}
});
$(document).on('mouseup',function()
{
mousedownements.length=0;
});
//禁用上下文菜单
$(文档).on('contextmenu',函数(事件)
{
event.preventDefault();
});
});
//用法:
$('#testButton')。在('右键单击')上,函数(事件)
{
警报(“这是右击”);
});


如果要调用函数,请右键单击我,而右键单击事件表示我们可以使用以下命令

 <html lang="en" oncontextmenu="func(); return false;">
 </html>

<script>
function func(){
alert("Yes");
}
</script>

函数func(){
警惕(“是”);
}

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

 document.body.oncontextmenu=function(event) {
     alert(" Right click! ");
 };
按下右键单击时,上面的代码会提醒某些文本。如果不希望显示浏览器的默认菜单,可以添加 返回false; 在函数内容的末尾。
谢谢。

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

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

 });
然而这不是跨浏览器解决方案,浏览器在该事件中的表现不同,尤其是firefox和IE。我建议在下面使用跨浏览器解决方案

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

if (evt.xa.which == 3) 
{
    alert("Right mouse clicked");
}

如果要检测鼠标右键单击,则不应使用
MouseEvent.which
属性,因为它是非标准的,并且浏览器之间存在很大的不兼容性。(请参阅)您应该改为使用。它返回一个表示给定按钮的数字:

  • 0
    :按下主按钮,通常为左侧按钮或未初始化状态
  • 1
    :按下辅助按钮,通常是车轮按钮或中间按钮(如果存在)
  • 2
    :按下辅助按钮,通常是右按钮
  • 3
    :第四个按钮,通常是浏览器后退按钮
  • 4
    :第五个按钮,通常是浏览器前进按钮
MouseEvent.button
处理的输入类型多于标准鼠标:

按钮的配置可能与标准不同 “从左到右”布局。配置为左手使用的鼠标可能会 将按钮操作反转。某些定点设备只有一个按钮 按钮,并使用键盘或其他输入机制指示主, 辅助按钮、辅助按钮等。其他按钮可能映射到 不同的功能和按钮值

参考:


  • 这是启动它的最简单方法,它适用于除应用程序Web视图(如(CEF)等)之外的所有浏览器。 我希望我的代码能帮助你,祝你好运

    const contentorightclick=document.querySelector(“div#contentorightclick”);
    //const contentorightclick=window;//如果要将其添加到整个文档中
    contentToRightClick.oncontextmenu=函数(e){
    e=(e | | window.event);
    e、 预防默认值();
    控制台日志(e);
    返回错误