鼠标、键盘事件
鼠标、键盘事件
技术学习|2024-2-23|最后更新: 2024-3-10
type
status
date
slug
summary
tags
category
icon
password
Blocking
Blocked by
top
URL
Sub-item
Parent item

背景

由于开发富文本中遇到中文输入法输入等问题,所以总结一下。

键盘事件

触发顺序

普通输入

keydown -> keypress -> input -> change -> keyup

输入法输入

输入时
keydown -> CompositionStart -> CompositionUpdate -> input -> change -> onCompositionEnd -> keyup

普通事件

keyup 事件中无法阻止浏览器默认事件,如要阻止默认行为,必须在keydownkeypress时阻止。
事件名
触发时机
备注
keydown
按下任意按键。
keypress
任意键被按住。
1.当按键处于按下状态时事件会持续触发。2. 按 ShiftFnCapsLock不能触发。3. 中文输入法中不会被触发
keyup
释放任意按键。

输入框特殊事件

只会输入框中输入时触发。
事件名
触发时机
备注
compositionstar
使用中文输入法,开始输入时
不用输入法不会触发
compositionend
使用中文输入法,输入完成时
不用输入法不会触发
compositionupdate
使用中文输入法,输入更新时
不用输入法不会触发
input
当输入时
change
当值变化时

鼠标事件

事件类型
触发时机
备注
click
单击鼠标左键,按键抬起后
如果左右键同时按下则不会发生。当用户的焦点在按钮上并按了 Enter 键时,同样会触发这个事件
contextmenu
单击鼠标右键,按键抬起后
如果左右键同时按下则不会发生。
dblclick
双击鼠标左键时
如果右键也按下则不会发生。
mousedown
鼠标左键或右键按下时
mouseup
鼠标左键或右键抬起后
mouseover
当鼠标移入元素或其子元素时
因为移动到子元素也会触发,所以会在元素里重复触发,是一个冒泡的过程。对应的移除事件是mouseout
mouseout
当鼠标离开元素或其子元素时
离开子元素也会触发
mouseenter
当鼠标移入元素本身(不包含元素的子元素)时
不会冒泡,只会在元素里触发一次。对应的离开事件是mouseleave
mouseleave
当鼠标离开元素本身(不包含元素的子元素)时
离开子元素不会触发
mousemove
鼠标移动时
会重复触发。

参考资料

vue3 自定义hook最佳实践组件库支持按需加载
Loading...