keypress和keyup-为什么keyCode不同?

弗洛里安(Florian)人造黄油:

相关:JavaScript KeyCode与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不同?

我能理解为什么只应该使用按键,但是我不明白的是,给定键盘上的相同击键,两个按键事件如何给出不同的keyCodes。

PS:我不用担心对旧版浏览器的支持,我在Chrome中尝试了此操作,感到很惊讶,并且找不到解释。

Tim Down:

这些事件的目的完全不同。使用keyupkeydown标识物理键和keypress标识键入的字符。两者是根本不同的任务,具有不同的事件。不要试图将两者混为一谈。特别是,keyCodeon keypress事件通常是多余的,不应使用(较旧的IE除外,但有关更多信息,请参见下面的链接文档);对于可打印的按键,通常与which相同charCode,尽管浏览器之间存在一些差异。

Jan Wolter的关于键事件的文章已经链接到另一个答案,对我而言,这是该主题的权威性词汇,它的表格描述了每种键事件和每种浏览器的不同属性分别返回什么。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章