如何区分“右键单击鼠标”和“上下文菜单键按下物理键盘”

时间:2012-07-12 10:10:40

标签: jquery contextmenu keypress right-click

如何区分鼠标右键单击和物理键盘上的上下文菜单键?

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

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

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

使用鼠标右键单击是

  1. 按钮:2
  2. originalEvent:MouseEvent
  3. type:“contextmenu”
  4. 其中:3
  5. 对于键盘上下文按键,按

    1. 按钮:2
    2. originalEvent:MouseEvent
    3. type:“contextmenu”
    4. 其中:3
    5. 我只想在物理键盘上按下“contextmenu键”时才执行某些操作。我如何实现这一目标?

      提前致谢!

2 个答案:

答案 0 :(得分:2)

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

我已经在Alienware上测试了这个 - Chrome,当您点击右键时,您会在键盘上看到其他明智的警告,您将看到keyborad警报。

请注意:您可以根据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);
});​

答案 1 :(得分:0)

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

如果否,则为鼠标事件,如果是,则为contextmenu键

编辑:contextMenu的键码是93