事件的传播机制
1、捕获阶段:从最外层向最里层事件源依次进行查找(目的:是为冒泡阶段事先计算好传播的层级路径) =>CAPTURING_PHASE:1
2、目标阶段:当前元素的相关事件行为触发 =>AT_TARGET:2
3、冒泡传播:触发当前元素的某一个事件行为,不仅它的这个行为被触发了,而且它所有的祖先元素(一直到window)相关的事件行为都会被依次触发(从内到外的顺序) =>BUBBLING_PHASE:3 (Event.prototype)
<div id="outer">
<div id="inner">
<div id="center"></div>
</div>
</div>
<script>
// 四次输出的 ev事件相同
// ev.stopPropagation() 可以阻止事件冒泡
document.body.onclick = function (ev) {
console.log("body", ev);
}
outer.onclick = function (ev) {
console.log("outer", ev);
}
inner.onclick = function (ev) {
console.log("inner", ev);
}
center.onclick = function (ev) {
console.log("center", ev);
// 阻止事件冒泡
// ev.stopPropagation()
}
</script>