【问题标题】:How do I get context menu shown on sht-right click and not on right click?如何在右键单击而不是右键单击时显示上下文菜单?
【发布时间】:2017-07-31 21:52:04
【问题描述】:

我想要一个简单的 右键单击 来触发一个功能,以及一个 shift 右键单击​​ 来显示正常的上下文菜单而不触发任何功能。左键单击绑定到另一个函数。

我正在尝试:

$(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;");

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

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    右键单击使用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>

    【讨论】:

      【解决方案2】:
      if(!ev.shiftKey){
         ev.preventDefault();
         anotherFunction();
      }
      

      【讨论】:

      • 我正在使用它,我的代码中唯一的区别是我也有ev.stopPropagation();:它是否负责不工作?
      猜你喜欢
      • 2019-05-08
      • 2010-09-21
      • 2016-12-31
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多