| 鼠标事件 | 触发说明 |
|---|---|
| click | 鼠标点击元素时触发(按下并释放) |
| dblclick | 鼠标双击元素时触发 |
| mousedown | 鼠标按键在元素上按下时触发 |
| mouseup | 鼠标按键在元素上释放时触发 |
| mousemove | 鼠标在元素上移动时持续触发 |
| mouseover / mouseout | 鼠标移入 / 移出元素边界时触发(含子元素冒泡) |
| mouseenter / mouseleave | 鼠标进入 / 离开元素时触发(不冒泡) |
| contextmenu | 鼠标右键点击弹出上下文菜单时触发 |
| 键盘事件 | 触发说明 |
|---|---|
| keydown | 键盘按键按下时触发,可捕获所有按键 |
| keypress | 按键产生字符时触发(已废弃,建议用 keydown/keyup) |
| keyup | 键盘按键释放时触发 |
| 表单事件 | 触发说明 |
|---|---|
| focus / blur | 元素获得 / 失去焦点时触发 |
| change | 输入框、下拉框、单选框等值发生改变并失去焦点时触发 |
| input | 输入内容变化时立即触发(含粘贴、删除等) |
| submit | 表单提交时触发,常用于校验阻止默认提交 |
| reset | 表单被重置时触发 |
| select | 文本被选中时触发 |
| 窗口事件 | 触发说明 |
|---|---|
| load | 页面及所有资源加载完成后触发 |
| DOMContentLoaded | DOM 解析完成、资源尚未加载完时触发 |
| resize | 窗口尺寸改变时触发 |
| scroll | 滚动容器或窗口滚动时触发 |
| unload / beforeunload | 页面卸载前触发,用于提醒或清理 |
| hashchange | URL 的哈希部分改变时触发 |
| 触摸 / 指针事件 | 触发说明 |
|---|---|
| touchstart | 手指触摸屏幕时触发 |
| touchmove | 手指在屏幕上滑动时触发 |
| touchend | 手指离开屏幕时触发 |
| touchcancel | 触摸被系统中断时触发 |
| pointerdown / pointermove / pointerup | 鼠标、触控笔、手指等统一指针设备事件 |
| 拖拽事件 | 触发说明 |
|---|---|
| dragstart / dragend | 开始拖拽 / 结束拖拽时在源元素上触发 |
| dragover | 拖拽元素经过目标元素上方时持续触发,需 preventDefault 才可放置 |
| dragenter / dragleave | 拖拽元素进入 / 离开目标元素时触发 |
| drop | 拖拽元素在目标元素上释放时触发 |
JavaScript 事件是用户与页面交互的核心机制,常见事件类型涵盖鼠标、键盘、表单、窗口、触摸/指针以及拖拽等,每种事件对应特定触发时机与使用场景。
▪ 鼠标事件中 click 最常用,mouseover/mouseout 会冒泡而 mouseenter/mouseleave 不冒泡,需根据子元素需求选择合适的事件避免重复触发。
▪ 键盘事件建议优先使用 keydown 捕获按键,通过 key 属性判断按键值;触摸与指针事件应在移动端考虑减少触发频率并适当优化性能。
▪ 事件可通过 addEventListener 绑定,支持冒泡与捕获两种传播阶段,并可结合 preventDefault 阻止默认行为、stopPropagation 阻止传播,从而灵活实现复杂交互逻辑。