【问题标题】:How to differentiate between 'right click using mouse' AND 'context menu key press on physical keyboard'如何区分“使用鼠标右键单击”和“在物理键盘上按下上下文菜单键”
【发布时间】:2012-07-12 10:10:39
【问题描述】:

如何区分使用鼠标右键单击和在物理键盘上按下上下文菜单键?

使用此代码我尝试在控制台中打印事件

$('#'+inputId).bind('contextmenu', function(e) {
    console.log(e);
});

我为上面的代码获取了一些输出-

使用鼠标右键单击是-

  1. 按钮:2
  2. 原始事件:鼠标事件
  3. 类型:“上下文菜单”
  4. 其中:3

对于键盘上的上下文菜单键按下是-

  1. 按钮:2
  2. 原始事件:鼠标事件
  3. 类型:“上下文菜单”
  4. 其中:3

我只想在物理键盘上按下“上下文菜单键”时执行一些操作。我该如何做到这一点?

【问题讨论】:

    标签: jquery contextmenu keypress right-click


    【解决方案1】:

    您好,这将帮助您捕捉差异:工作演示 http://jsfiddle.net/pPnME/1/

    我已经在 Alienware - Chrome 上对此进行了测试,当您右键单击时,您将看到右键单击警报,否则在键盘上您将看到键盘警报。

    请注意:您可以根据which属性识别点击:http://api.jquery.com/event.which/

    对于键或鼠标事件,此属性指示特定键或 按下的按钮。

    希望这符合原因。 :)

    另外请注意,几乎没有插件可用于获取快捷方式,但我建议坚持基本并使用我提供的演示,如果它只是分别捕获两个事件,其余演示就是你的全部:)

    代码

    /*
      1 = Left   Mousebutton
      2 = Centre Mousebutton
      3 = Right  Mousebutton
    */
    $('input').mousedown(function(e) {
        if (e.which === 3) {
            alert('rightclick'); /* Right Mousebutton was clicked! */
        }
    });
    $('input').bind('contextmenu', function(e) {
        alert('keyboard yeah');
        //console.log(e);
    });​
    

    【讨论】:

    • 感谢@Tats_innit,在我的 Ubuntu 机器上,它适用于键盘,但使用鼠标右键单击时,我首先在 mousedown 时看到 2 个警报,在 bind 时看到第二个警报。
    • @ManojL 你好,嗯,我认为 jsfiddle 暂时停止维护 - 如何在第一个 mousedown 事件中返回 return falseOR 绑定第二个 contextmenu 绑定keyup evet,有趣的是,它实际上在我的外星人软件中运行良好,:)) 但这个想法完全可以帮助你。让我知道它是怎么回事
    • 是的 jsfiddle 此刻低头。我会再试一次我的电脑,让你知道......我认为 $('input').unbind('contextmenu');在 mousedown 事件中应该可以解决问题!
    • 嗨@ManojL试试这个人就够了:jsfiddle.net/pPnME/11希望这对:)有帮助
    【解决方案2】:

    您还可以检查是否按下了某个键 keyPressed 是事件。

    如果不是,是鼠标事件,如果是,是上下文菜单键

    编辑:contextMenu 的键码是 93

    【讨论】:

      猜你喜欢
      • 2011-08-27
      • 2019-04-23
      • 2011-01-17
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多