事件流

事件流

事件流描述的是从页面中接受事件的顺序。分为两种:IE提出的事件冒泡流、Netscape(网景)提出的事件捕获流。

  • 事件冒泡流是指具体元素触发事件后,逐级向上传播的方式。
  • 事件捕获流是指不太具体的点接收事件后,逐级向下寻找具体的元素进行触发。

DOM事件流

  • 事件捕获阶段
  • 处于目标阶段 (执行事件)
  • 事件冒泡阶段

在逐级向下寻找具体元素的事件捕获阶段,不太具体的元素(如div)不会接收到事件,找到具体元素后,进入到处于莫表阶段,事件在元素上执行。事件在处理过程中进入冒泡阶段。

HTM结构如下

<div id="app">
  <button id="btn">按钮</button>
</div>

事件捕获

<script>
  app.addEventListener('click', function() {
    console.log("app被点击");
  }, true);
  btn.addEventListener('click', function() {
    console.log("btn被点击")
  }, true);
  // 按钮点击后,app先触发,btn后触发。
</script>

事件冒泡

<script>
  app.addEventListener('click', function() {
    console.log("app被点击");
  }, false);
  btn.addEventListener('click', function() {
    console.log("btn被点击")
  }, false);
  // 按钮点击后,btn先触发,app后触发。
</script>

一般情况下,默认的都是事件冒泡阶段触发函数。阻止冒泡的方法
event.stopPropagation()

原文地址:https://www.cnblogs.com/miku561/p/10490732.html