【发布时间】:2015-04-25 23:59:22
【问题描述】:
我已经阅读了有关 Stack Overflow 的相关答案和文章,但仍然没有得到它:
在 Chrome 控制台上,如果我在 keypress 和 keydown 事件上添加两个侦听器以输出 keyCode,当密钥为小写时,我会得到不同的 keycode。
但是,当大写时,keyCode 对于这两个事件似乎是相同的。
示例:
document.addEventListener('keypress', function(e){ console.log('keyPress', e.keyCode); });
document.addEventListener('keydown', function(e){ console.log('keyDown', e.keyCode); });
// Open your console
// Typing 'a' in the result field outputs 'keyPress 97' 'keyDown 65'
// on chrome 42 console. Activate uppercase, and then typing 'A' outputs 'keyPress 65' and 'keyDown 65'
// Why ?
这是正常的行为吗?
【问题讨论】:
-
IRRC 按键不是由所有键引发的,keydown 是。我也认为浏览器之间的键码不同。
-
这很正常,这就是为什么会有不同的事件,因为它们的行为不同。 “当一个键被按下并且该键通常会产生一个字符值时会触发 keypress 事件” -- developer.mozilla.org/en-US/docs/Web/Events/keypress
-
感谢您的快速评论!是的,我知道它们是不同的事件,但关键是相同的。在查看大写行为时还证明了这一点:键码似乎是相同的。
-
@ShawnJacobson 感谢您的精彩文章,我知道按键发生在按键之后、输入之前和按键之前。我只是想知道为什么 keyCode 在小写时两者之间不同,而在大写时则不同。
标签: javascript dom-events keypress keydown keycode