我已经阅读了有关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 ?
这是正常行为吗?
答案 0 :(得分:0)
What's the difference between KeyDown and KeyPress in .NET? ...解释得很好。 keydown只跟踪密钥本身,而不是密钥的状态。如果按 A KeyDown会生成Keys.A的KeyCode,如果按 shift + A ,您还会获得Keys.A的KeyCode。