如何在右键单击而非右键单击时显示上下文菜单?

时间:2017-07-31 13:20:47

标签: javascript jquery

我希望得到一个简单的右键单击来触发一个功能,并且右键单击以显示正常的上下文菜单而不会触发任何功能。左键单击绑定到另一个函数。

我正在尝试:

$(selector).mousedown(function (ev) {
  if (ev.which === 1) {
     function1();
  } else if (ev.which === 3) {
    if (ev.shiftKey) {

    } else {
      ev.preventDefault();
      ev.stopPropagation();
      function2();
    }
  }

  return false; 
});

但是当我右键单击时,仍会显示上下文菜单。

我不想使用

$(selector).attr("oncontextmenu", "return false;");

因为这会完全禁用上下文菜单。

2 个答案:

答案 0 :(得分:0)

if(!ev.shiftKey){
   ev.preventDefault();
   anotherFunction();
}

答案 1 :(得分:0)

使用contextmenu事件代替mousedown进行右键点击

$('div').on('contextmenu', function(ev) {
  if (!ev.shiftKey) {
    ev.preventDefault();   
    function2();
  }
}).on('mousedown', function(ev) {
  if (ev.which == 1) {
    function1();
  }
});

function function2() {
  console.log('function 2 called')
}

function function1() {
  console.log('function 1 called')
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div style="padding:50px; border:1px solid #ccc">
  Test
</div>