javascript 推荐使用 keydown 和 keyup 事件监听键盘操作:keydown 在按键按下时触发(长按连续触发),可用 event.key 获取语义值、event.code 获取物理键位、修饰键属性判断组合键;keyup 在按键松开时触发(仅一次),适用于操作结束检测;应避免使用已废弃的 keypress 和 keycode。

JavaScript 通过 keydown、keyup 和 keypress(已废弃)事件监听键盘操作,其中最常用且推荐的是 keydown(按键按下)和 keyup(按键抬起)。
监听按键按下(keydown)
当用户按下任意键(包括修饰键如 Ctrl、Shift、Alt)时触发。注意:长按会连续触发,适合检测“开始操作”或组合键。
- 使用
addEventListener('keydown', handler)绑定事件 - 通过
event.key获取按键的可读字符(如"a"、"Enter"、"Control") - 用
event.code获取物理按键编码(如"KeyA"、"Enter"、"ControlLeft"),不受键盘布局影响,适合快捷键开发 - 检查修饰键状态可用
event.ctrlKey、event.shiftKey、event.altKey、event.metaKey
示例:监听 Ctrl+S 保存操作
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
document.addEventListener('keydown', (e) => {
if (e.ctrlKey && e.key === 's') {
e.preventDefault(); // 阻止浏览器默认保存行为
console.log('执行自定义保存');
}
});
监听按键抬起(keyup)
当用户松开某个键时触发,只触发一次。适合检测“操作结束”或需要确认按键完全释放的场景(如游戏中的松开跳跃)。
- 同样支持
event.key和event.code - 修饰键属性(
ctrlKey等)在keyup中仍有效,但仅反映松开瞬间的修饰键状态 - 注意:松开修饰键(如 Ctrl)也会触发
keyup,需结合event.code判断是否是目标键
示例:检测空格键抬起
document.addEventListener('keyup', (e) => {
if (e.code === 'Space') {
console.log('空格键已松开');
}
});
区分 key、code 和 keyCode(避免踩坑)
优先使用 key 和 code,不要用已废弃的 keyCode 或 which:
-
event.key:表示按键的语义值(如按下 Shift+1 →"!";按下 CapsLock →"CapsLock") -
event.code:表示物理按键位置(如左 Shift 键始终是"ShiftLeft",与是否开启 CapsLock 无关) -
keyCode已被标准弃用,不同浏览器行为不一致,现代项目中应避免使用
注意事项与最佳实践
- 若监听范围是整个页面,绑定到
document;若只在输入框内响应,绑定到具体<input>或<textarea></textarea> - 记得在不需要时调用
removeEventListener,防止内存泄漏(尤其在单页应用中) - 移动端无传统键盘事件,
keydown/keyup在 iOS/Android 浏览器中通常不触发(软键盘不模拟这些事件),需用input或compositionstart/end替代 - 游戏或高频响应场景慎用长按触发的
keydown,必要时用setTimeout去抖或标记状态位控制逻辑执行频率
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










