我有一些简单的代码可以记录按下的键代码,例如:
window.addEventListener('keypress', function(e) {
console.log(e.keyCode);
})
它似乎可以在Alt +键盘上几乎所有其他方式工作。 除了Alt + N。 似乎根本没有注册该活动!只是N(没有Alt)似乎起作用,其他组合(例如Ctrl + N)也起作用。当我键入Alt + N时,什么也没有发生,所以据我所知,它未被系统保留。我在Mac上使用Chrome。
这是我的计算机是否有问题,或者是否也发生在其他人身上?如果确实发生在其他人身上,为什么要这样做并且有办法检测到它?
答案 0 :(得分:2)
尝试:
window.addEventListener('keydown', function(e) {
if (e.altKey == true && e.keyCode == 78)
console.log('Alt + N');
});
答案 1 :(得分:1)
使用keypress
事件对我而言不起作用。某些组合可以与 Ctrl 结合使用,而某些组合则不能。
但是,当我监听keydown
和keyup
事件时,我能够记录这些事件。因此,我想您可以在 Alt 上监听keydown
事件,并且在 Alt之前是否有 N 的keydown
事件生成keyup
,则说明您已成功检测到 Alt + N 组合。
我不确定为什么会发生这种情况。
编辑
按下产生字符值的键时将触发keypress事件。产生字符值的键的示例包括字母,数字和标点键。
不产生字符值的键示例是修饰键,例如 Alt,Shift,Ctrl或Meta 。
关于为什么某些快捷方式在Chrome中有效,而有些快捷方式无效的原因,Mozilla说
Chrome不会触发已知键盘快捷键的按键事件。 哪些快捷键是已知的,取决于用户的系统。使用keydown事件可实现键盘快捷键。