事件传播的三阶段
- 捕获阶段: 事件对象从window到目标父节点传播的阶段。
- 目标阶段: 事件对象到达目标。如果事件类型指定不冒泡,则事件对象将在此阶段完成后停止。
- 冒泡阶段: 事件流对象从目标父节点到达window传播的阶段。
注册事件
通常使用addEventListener
注册事件,该函数的第三个参数可以是布尔值,也可以是对象,默认值为false
,决定了注册的事件是捕获事件(true)还是冒泡事件。 一般来说,如果我们只希望事件只触发在目标上,这时候可以使用
target 和 currentTarget
target
是触发事件的某个具体的对象,只会出现在事件机制的目标阶段,即"谁触发了事件,谁就是target"。 currentTarget
是绑定了当前事件类型的对象,有可能是目标节点的祖先节点。
取消默认行为
w3c的方法是e.preventDefault()
,早期版本的IE浏览器使用e.returnValue = false
。
/**
* 兼容的取消事件默认行为
*/
function cancel