相关:JavaScript KeyCode vs CharCode
这里有一些代码,您可以在家或在 jsfiddle 中尝试。 :
el.addEventListener( 'keyup', function( e ) {
console.log( 'Keyup event' );
console.log( e.keyCode );
} );
el.addEventListener( 'keypress', function( e ) {
console.log( 'Keypress event' );
console.log( e.keyCode );
} );
为什么 keyCode 不同?
我可以理解为什么应该只使用按键,但我不明白的是,在键盘上给出相同的击键的情况下,两个按键事件如何给出不同的键码。
PS:我并不担心旧版浏览器的支持,我在 Chrome 中尝试过这一点,结果很惊讶,而且找不到解释。
最佳答案
这些事件的目的完全不同。使用 keyup
和 keydown
来识别物理按键,使用 keypress
来识别键入的字符。两者是根本不同的任务,具有不同的事件;不要尝试将两者混合。特别是,keypress
事件上的 keyCode
通常是多余的,不应使用(旧版 IE 除外,但有关更多信息,请参阅下面的链接文档);对于可打印的按键,它通常与 which
和 charCode
相同,尽管浏览器之间存在一些差异。
Jan Wolter's article on key events ,已经在另一个答案中链接到,对我来说是关于这个主题的明确词,并且有表格描述每个不同属性为每种类型的关键事件和每个浏览器返回的内容。
关于javascript - keypress 和 keyup - 为什么 keyCode 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25205367/