鼠标、键盘事件
Contents
由于开发富文本中遇到中文输入法输入等问题,所以总结一下。
键盘事件
触发顺序
普通输入
keydown ->keypress -> input->change-> keyup
输入法输入
输入时
keydown ->CompositionStart->CompositionUpdate -> input->change->onCompositionEnd ->keyup
普通事件
在keyup
事件中无法阻止浏览器默认事件,如要阻止默认行为,必须在keydown
或keypress
时阻止。
事件名 | 触发时机 | 备注 |
---|---|---|
keydown |
按下任意按键。 | |
keypress |
任意键被按住。 | 1.当按键处于按下状态时事件会持续触发。2. 按 Shift 、Fn 、CapsLock 不能触发。3. 中文输入法中不会被触发 |
keyup |
释放任意按键。 |
输入框特殊事件
只会输入框中输入时触发。
事件名 | 触发时机 | 备注 |
---|---|---|
compositionstar |
使用中文输入法,开始输入时 | 不用输入法不会触发 |
compositionend |
使用中文输入法,输入完成时 | 不用输入法不会触发 |
compositionupdate |
使用中文输入法,输入更新时 | 不用输入法不会触发 |
input |
当输入时 | |
change |
当值变化时 |
鼠标事件
事件类型 | 触发时机 | 备注 |
---|---|---|
click |
单击鼠标左键,按键抬起后 | 如果左右键同时按下则不会发生。当用户的焦点在按钮上并按了 Enter 键时,同样会触发这个事件 |
contextmenu |
单击鼠标右键,按键抬起后 | 如果左右键同时按下则不会发生。 |
dblclick |
双击鼠标左键时 | 如果右键也按下则不会发生。 |
mousedown |
鼠标左键或右键按下时 | |
mouseup |
鼠标左键或右键抬起后 | |
mouseover |
当鼠标移入元素或其子元素时 | 因为移动到子元素也会触发,所以会在元素里重复触发,是一个冒泡的过程。对应的移除事件是mouseout |
mouseout |
当鼠标离开元素或其子元素时 | 离开子元素也会触发 |
mouseenter |
当鼠标移入元素本身(不包含元素的子元素)时 | 不会冒泡,只会在元素里触发一次。对应的离开事件是mouseleave |
mouseleave |
当鼠标离开元素本身(不包含元素的子元素)时 | 离开子元素不会触发 |
mousemove |
鼠标移动时 | 会重复触发。 |