Keydown和keypress事件提供不同的keyCode

时间:2015-04-25 23:59:23

标签: javascript javascript-events keypress keydown keycode

我已经阅读了有关SO的相关答案和文章,但仍然没有得到它:

在chrome控制台上,如果我在keypress和keydown事件上添加两个侦听器来输出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 ? 

这是正常行为吗?

1 个答案:

答案 0 :(得分:0)

What's the difference between KeyDown and KeyPress in .NET? ...解释得很好。 keydown只跟踪密钥本身,而不是密钥的状态。如果按 A KeyDown会生成Keys.A的KeyCode,如果按 shift + A ,您还会获得Keys.A的KeyCode。