键盘事件
【键盘事件】
键盘事件的种类
键盘事件由用户击打键盘触发,主要有keydown
、keypress
、keyup
三个事件,它们都继承了KeyboardEvent
接口。
keydown
:按下键盘时触发。keypress
:按下有值的键时触发,即按下 Ctrl、Alt、Shift、Meta 这样无值的键,这个事件不会触发。对于有值的键,按下时先触发keydown
事件,再触发这个事件。keyup
:松开键盘时触发该事件。
如果用户一直按键不松开,就会连续触发键盘事件,触发的顺序如下。
- keydown
- keypress
- keydown
- keypress
- …(重复以上过程)
- keyup
KeyboardEvent 接口概述
KeyboardEvent
接口用来描述用户与键盘的互动。这个接口继承了Event
接口,并且定义了自己的实例属性和实例方法。
除了Event
接口提供的属性,还可以配置以下字段,它们都是可选。
key
:字符串,当前按下的键,默认为空字符串。code
:字符串,表示当前按下的键的字符串形式,默认为空字符串。location
:整数,当前按下的键的位置,默认为0
。ctrlKey
:布尔值,是否按下 Ctrl 键,默认为false
。shiftKey
:布尔值,是否按下 Shift 键,默认为false
。altKey
:布尔值,是否按下 Alt 键,默认为false
。metaKey
:布尔值,是否按下 Meta 键,默认为false
。repeat
:布尔值,是否重复按键,默认为false
。
KeyboardEvent 的实例属性
1 | /* |
KeyboardEvent.altKey,KeyboardEvent.ctrlKey,KeyboardEvent.metaKey,KeyboardEvent.shiftKey
以下属性都是只读属性,返回一个布尔值,表示是否按下对应的键。
KeyboardEvent.altKey
:是否按下 Alt 键KeyboardEvent.ctrlKey
:是否按下 Ctrl 键KeyboardEvent.metaKey
:是否按下 meta 键(Mac 系统是一个四瓣的小花,Windows 系统是 windows 键)KeyboardEvent.shiftKey
:是否按下 Shift 键
下面是一个示例。
1 | function showChar(e) { |
KeyboardEvent.charCode和KeyboardEvent.keyCode属性
e.charCode
属性通常用于 onkeypress
事件中,表示用户输入的字符的 “字符码”。
e.keyCode
属性通常用于 onkeydown
事件和 onkeyup
中,表示用户按下的按键的 “键码”。
charCode字符码
字符 | 字符码 |
---|---|
0 ~ 9 |
48 ~ 57 |
A ~ Z |
65 ~ 90 |
a ~ z |
97 ~ 122 |
keyCode键码
按键 | 键码 |
---|---|
0 ~ 9 |
48 ~ 57(同 charCode 键码完全相同) |
A ~ Z a ~ z |
65 ~ 90(字母不分大小写) |
方向键 ← ↑ → ↓ |
37、38、39、40 |
退格键 Backspace |
8 |
Tab |
9 |
回车键 enter |
13 |
Shift |
16 |
Ctrl |
17 |
Alt |
18 |
大小键 CapsLK |
20 |
Esc |
27 |
空格键 space |
32 |
删除键 Delete |
46 |
开始键 Start |
91 |
F1 ~ F12 |
112 ~ 123 |
以上只是部分!
案例
1 |
|
style=“zoom:50%;” />
【小案例 - 盒子移动】
制作一个特效:按方向键可以控制页面上的盒子移动。
1 |
|
style=“zoom:50%;” />
KeyboardEvent.key
key
用户按下的键盘键的值
现在不提倡使用keyCode
KeyboardEvent.key
属性返回一个字符串,表示按下的键名。该属性只读。
如果按下的键代表可打印字符,则返回这个字符,比如数字、字母。
如果按下的键代表不可打印的特殊字符,则返回预定义的键值,比如 Backspace,Tab,Enter,Shift,Control,Alt,CapsLock,Esc,Spacebar,PageUp,PageDown,End,Home,Left,Right,Up,Down,PrintScreen,Insert,Del,Win,F1~F12,NumLock,Scroll 等。
如果同时按下一个控制键和一个符号键,则返回符号键的键名。比如,按下 Ctrl + a,则返回a
;按下 Shift + a,则返回大写的A
。
如果无法识别键名,返回字符串Unidentified
。