我有一些简单的代码,可以记录按下的键码,例如:
window.addEventListener('keypress', function(e) {
console.log(e.keyCode);
})
这是我的电脑出了问题还是别人也会遇到相同的情况?如果别人也遇到了这个问题,为什么会这样,有没有方法可以检测?
我有一些简单的代码,可以记录按下的键码,例如:
window.addEventListener('keypress', function(e) {
console.log(e.keyCode);
})
这是我的电脑出了问题还是别人也会遇到相同的情况?如果别人也遇到了这个问题,为什么会这样,有没有方法可以检测?
请尝试:
window.addEventListener('keydown', function(e) {
if (e.altKey == true && e.keyCode == 78)
console.log('Alt + N');
});
keypress
事件对于我来说无法处理Alt+N和任何与Alt相关的组合。一些组合可以使用Ctrl,而另一些则不行。keydown
和keyup
事件时,我能够记录这些事件。所以,我想你可以在Alt上监听keydown
事件,如果在Alt生成keyup
之前有一个N的keydown
事件,那么你就成功地检测到了Alt+N组合键。
我不确定为什么会发生这种情况。
编辑 根据Mozilla文档,至于为什么在Chrome中有些快捷键可以工作,而有些不能,Mozilla说道:当按下产生字符值的键时,将触发keypress事件。产生字符值的键的示例包括字母、数字和标点符号键。
不产生字符值的键的示例是修改键,例如Alt、Shift、Ctrl或Meta。
Chrome不会为已知的键盘快捷键触发keypress事件。哪些键盘快捷键是已知的取决于用户的系统。使用keydown事件来实现键盘快捷键。
event
对象具有altKey
属性,当按住alt键时该属性值为true。 - Patrick Evanskeypress
的文档,并找到了keypress
无法与修饰键一起使用的原因。我已经在我的答案中更新了来自文档的摘录。@Ashraf 我认为你应该将这个信息包含在你的答案中,以便完整回答 OP 的问题。 - Mayank K Rastogi