如何在JavaScript中的按键上捕获ALT + N

时间:2018-10-14 03:36:12

标签: javascript keyboard-shortcuts keypress

我有一些简单的代码可以记录按下的键代码,例如:

window.addEventListener('keypress', function(e) {
  console.log(e.keyCode);
})

它似乎可以在Alt +键盘上几乎所有其他方式工作。 除了Alt + N。 似乎根本没有注册该活动!只是N(没有Alt)似乎起作用,其他组合(例如Ctrl + N)也起作用。当我键入Alt + N时,什么也没有发生,所以据我所知,它未被系统保留。我在Mac上使用Chrome。

这是我的计算机是否有问题,或者是否也发生在其他人身上?如果确实发生在其他人身上,为什么要这样做并且有办法检测到它?

2 个答案:

答案 0 :(得分:2)

尝试:

window.addEventListener('keydown', function(e) {
  if (e.altKey == true && e.keyCode == 78)
    console.log('Alt + N'); 
});

答案 1 :(得分:1)

对于 Alt + N 和与 Alt 的任何组合,

使用keypress事件对我而言不起作用。某些组合可以与 Ctrl 结合使用,而某些组合则不能。

但是,当我监听keydownkeyup事件时,我能够记录这些事件。因此,我想您可以在 Alt 上监听keydown事件,并且在 Alt之前是否有 N keydown事件生成keyup,则说明您已成功检测到 Alt + N 组合。

我不确定为什么会发生这种情况。

编辑

根据Mozilla documentation

  

按下产生字符值的键时将触发keypress事件。产生字符值的键的示例包括字母,数字和标点键。

     

不产生字符值的键示例是修饰键,例如 Alt,Shift,Ctrl或Meta

关于为什么某些快捷方式在Chrome中有效,而有些快捷方式无效的原因,Mozilla

  

Chrome不会触发已知键盘快捷键的按键事件。 哪些快捷键是已知的,取决于用户的系统。使用keydown事件可实现键盘快捷键。