键盘常用的监听器包括keydown、keyup、keypress,在回调函数中,我们能拿到键盘事件KeyboardEvent,那么如何根据事件属性来判断用户的按键呢?
首先,以前常用的KeyboardEvent.keyCode已经废弃,同样废弃的还有KeyboardEvent.charCode和KeyboardEvent.keyIdentifier,未来不可期,就不做研究了。现在有KeyboardEvent.key和KeyboardEvent.code可以使用。
KeyboardEvent.code返回物理键位的键值,可以理解为——它代表键帽的位置。
KeyboardEvent.key返回键位所代表的键值,可以理解为——它代表键帽上的字。
Shift 组合按键可能会改变KeyboardEvent.key返回值,比如:
A = a
Shift + A = A
= = =
Shift + = = +
但 Shift 不会改变 KeyboardEvent.code 返回值:
A = KeyA
Shift + A = KeyA
= = Equal
Shift + = = Equal
相同刻字,不同的键位,KeyboardEvent.key返回相同的值:
Shift = Shift
ShiftRight = Shift
Enter = Enter
NumpadEnter = Enter
而KeyboardEvent.code返回不同的值:
Shift = ShiftLeft
ShiftRight = ShiftRight
Enter = Enter
NumpadEnter = NumpadEnter
获取用户输入时,建议使用KeyboardEvent.key;获取固定键位时,建议使用KeyboardEvent.code。