Keydown 和 keypress 事件给出不同的 keyCode
Keydown and keypress events gives different keyCode
我已经阅读了 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 ?
这是正常行为吗?
What's the difference between KeyDown and KeyPress in .NET?... 解释得很好。 keydown 仅跟踪键本身,而不是键的状态。如果你按下 A KeyDown 生成一个 Keys.A 的 KeyCode 如果你按下 shift+A 你也得到了 Keys.A.
的 KeyCode
我已经阅读了 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 ?
这是正常行为吗?
What's the difference between KeyDown and KeyPress in .NET?... 解释得很好。 keydown 仅跟踪键本身,而不是键的状态。如果你按下 A KeyDown 生成一个 Keys.A 的 KeyCode 如果你按下 shift+A 你也得到了 Keys.A.
的 KeyCode