KeyboardEvent.code 返回按键的物理位置标识符,如"KeyA"、"ControlRight"、"NumpadEnter"等,不随修饰键变化,用于精准区分左右修饰键、主键盘与小键盘同功能键及非字母数字键的物理定位。

KeyboardEvent.code 属性返回按键在物理键盘上的**位置标识符(如 "KeyA"、"Digit1"、"Quote")
它与 key 属性不同:不随 Shift 或 CapsLock 等修饰键变化,也不反映当前输入字符,只描述“按下了哪个物理键”。这使得它成为区分左右 Alt、Ctrl、Shift,以及判断数字小键盘与主键盘上相同功能键(如 Enter、Backspace)的关键依据。
识别左右修饰键的物理位置
标准键盘通常有左右两组修饰键,它们的 code 值不同:
-
"ControlLeft"和"ControlRight" -
"AltLeft"和"AltRight" -
"ShiftLeft"和"ShiftRight" -
"MetaLeft"(Windows 键 / Command 键左)和"MetaRight"(右)
例如,监听 keydown 事件时检查 event.code === "ControlRight",即可精准捕获用户按下的是右侧 Ctrl 键,适用于游戏控制、快捷键自定义等场景。
立即学习“前端免费学习笔记(深入)”;
区分主键盘与小键盘的同功能键
小键盘区的按键拥有独立的 code 值,即使功能相同也易于分辨:
- 主键盘
Enter→"Enter" - 小键盘
Enter→"NumpadEnter" - 主键盘
+(Shift+=)→"Equal" - 小键盘
+→"NumpadAdd" - 小键盘
0–9→"Numpad0"到"Numpad9" - 小键盘
.→"NumpadDecimal"
这对计算器类应用或需要禁用小键盘输入的表单非常实用——可直接拦截 "Numpad0" 等事件,而不影响主键盘数字输入。
处理非字母数字键的物理定位
方向键、功能键、媒体键等均有明确的 code 命名规则:
- 方向键:
"ArrowUp"、"ArrowDown"、"ArrowLeft"、"ArrowRight" - F1–F12:
"F1"到"F12" - Home/End/PageUp/PageDown:
"Home"、"End"、"PageUp"、"PageDown" - 小键盘方向键(NumLock 关闭时):
"Numpad5"、"Numpad8"等仍保留Numpad前缀
注意:某些笔记本或紧凑键盘可能缺少独立方向键,此时方向功能由其他键(如 "Numpad8")复用,code 仍反映其物理位置而非逻辑功能。
注意事项与兼容性提醒
code 属性在现代浏览器中已广泛支持(Chrome 48+、Firefox 37+、Edge 13+、Safari 10.1+),但旧版 IE 不支持。使用前建议检测:
另外,code 值依赖键盘布局(如 QWERTY / AZERTY),但反映的是物理键位,不是扫描码;同一物理键在不同布局下 code 相同(如左下角 Ctrl 键始终是 "ControlLeft"),这点比 keyCode 更稳定可靠。



















