一、简介
事件的本质是程序各个组成部分之间的一种通信方式,也是异步编程的一种实现。
DOM 支持大量的事件,下面是一些常见事件种类
- 鼠标事件
- 键盘事件
- 进度事件
- 表单事件
- 触摸事件
- 拖拉事件
二、Event 对象
DOM 节点的事件操作(监听和触发)都定义在 EventTarget
接口,所有的节点对象都部署了这个接口。该接口主要提供了三个实例方法
- addEventListener():绑定事件的监听函数
- removeEventListener():移除事件的监听函数
- dispatchEvent():触发事件
事件发生后,会产生一个事件对象,作为参数传给监听函数。我们可使用 Event
构造函数创建一个 Event
实例。
const event = new Event(type, options)
options 是事件的对象的配置
- bubbles:布尔值,可选,默认为 false,表示事件对象是否冒泡
- cancelble:布尔值,可选,默认为 false,表示事件是否可以被取消
二、各个事件
1. 鼠标事件
鼠标有四个点击相关的事件,五个移动相关的事件
- click:按下鼠标时触发
- dblclick:在同一个元素双击鼠标时触发
- mousedown:按下鼠标键时触发
- mouseup:抬起鼠标键时触发
- mousemove:鼠标在一个节点内部移动时触发(为了避免性能问题,建议对该事件的监听函数做一些限定)
- mouseenter:鼠标进入一个节点时触发,进入子节点不会触发这个事件
- mouseover:鼠标进入一个节点时触发,进入子节点会再一次触发这个事件
- mouseout:鼠标离开一个节点时触发,离开父节点也会触发这个事件
- mouseleave:鼠标离开一个节点时触发,离开父节点不会触发这个事件
鼠标事件所产生的事件对象都是 MouseEvent 实例。此外滚动事件、拖拉事件也是 MouseEvent 实例。我们可使用 MouseEvent() 构造函数新建一个 MouseEvent 实例。
const event = new MouseEvent(type, options)
MouseEvent 接口的实例属性
- altKey:事件发生时,是否按下 Alt 键
- ctrilKey:事件发生时,是否按下 Ctrl 键
- metaKey:事件发生时,是否按下 Meta 键
- shiftKey:事件发生时,是否按下 Shift 键
- button:返回一个数值,表示事件发生时按下了鼠标的哪个键,0-主键,1-辅助键,2-次键
- buttons:返回一个三个比特位的值,表示事件发生时按下了鼠标的哪个键,比如 1 表示按下主键
- clientX、clientY:返回鼠标位置相对于浏览器左上角的水平/垂直坐标
- movementX、movementY:返回当前位置与上一个 mousemove 事件之间的水平/垂直距离
- screenX、screenY:返回鼠标位置相对于屏幕左上角的水平/垂直坐标
- offsetX、offsetY:返回鼠标位置与目标节点左侧/上方的 padding 边缘水平/垂直距离
- pageX、pageY:返回鼠标位置与文档左侧/上侧边缘的距离
2. 键盘事件
3. 进度事件
4. 表单事件
5. 触摸时间
6. 拖拉事件
7. 其他常见事件
三、参考链接
JavaScript 教程 - 阮一峰:https://wangdoc.com/javascript/events/index.html