首先,事件的传播跟我们有没有注册过事件没有关系。
<html>
<body>
<div>
<button>click<button>
</div>
</body>
</html>
// html之上是document,在往上window
一个事件的开始传播分三个阶段:事件捕获->找到目标元素->事件冒泡
如:点击button后从开始捕获window->html->body->div->button,找到目标元素‘button’,然后开始冒泡button->div->body->html->window。如果点击的是div,则button不参与传播和冒泡
事件捕获-点击button元素
示例代码中使用addEventListener给元素注册点击事件,addEventListener的第三个参数为true表示为捕获阶段,即捕获阶段触发回调点击事件。
执行顺序:body元素->div元素->button元素(与注册顺序无关)
<body>
<div>
<button></button>
</div>
</body>
const body = document.querySelector('body')
const div = document.querySelector('div')
const button = document