美文网首页
18-事件执行的三个阶段

18-事件执行的三个阶段

作者: 仰望_IT | 来源:发表于2019-05-10 23:56 被阅读0次
  • 1.事件的三个阶段
    • 1.1 捕获阶段(从外向内的传递事件)
    • 1.2 当前目标阶段
    • 1.3 冒泡的阶段(从内向外的传递事件)
  • 2. 注意点:
    • 三个阶段只有两个会被同时执行
    • 要么捕获和当前, 要么当前和冒泡
  • 3. 为什么要么只能是捕获和当前, 要么只能是当前和冒泡?
    • 这是JS处理事件的历史问题
    • 早期各大浏览器厂商为占领市场, 以及对事件的理解不同
    • 后续W3C为了兼容, 将两种方式都纳入标准


  • 如何设置事件到底是捕获还是冒泡?
    • 通过 addEventListener 方法, 这个方法接收三个参数
    • 第一个参数: 事件的名称
    • 第二个参数: 回调函数
    • 第三个参数: false 冒泡 / true 捕获
      let oFDiv = document.querySelector(".father");
      let oSDiv = document.querySelector(".son");
    
      // 捕获
      oFDiv.addEventListener("click", function () {
          console.log("father");  // 先执行father
      }, true);
      oSDiv.addEventListener("click", function () {
          console.log("son");  // 后执行son
      }, true);
    
      // 冒泡
      oFDiv.addEventListener("click", function () {
          console.log("father");  // 后执行father
      }, false);
      oSDiv.addEventListener("click", function () {
          console.log("son");  // 先执行son
      }, false);
    
  • 注意点:
    • onXxx的属性, 不接收任何参数, 所以默认就是冒泡
    • attachEvent 方法, 只能接收两个参数, 所以默认就是冒泡
    • 如果想看到捕获只能通过 addEventListener 方法
      let oFDiv = document.querySelector(".father");
      let oSDiv = document.querySelector(".son");
    
      // 冒泡
      oFDiv.onclick = function () {
          console.log("father");  // 后执行father
      };
      oSDiv.onclick = function () {
          console.log("son");  // 先执行son
      }
    
IE 6.0:
div -> body -> html -> document
其他浏览器:
div -> body -> html -> document -> window

注意:
不是所有的事件都能冒泡,以下事件不冒泡:blur、focus、load、unload

相关文章

  • 18-事件执行的三个阶段

    1.事件的三个阶段1.1 捕获阶段(从外向内的传递事件)1.2 当前目标阶段1.3 冒泡的阶段(从内向外的传递事件...

  • js事件机制

    一、js事件机制三个阶段:事件捕获、事件目标处理函数、事件冒泡 js中事件执行的整个过程称之为事件流,分为三个阶段...

  • 事件及如何阻止事件冒泡

    事件是什么?事件是指,javascript与文档或浏览器发生特定交互的瞬间。事件分为三个阶段执行:事件捕获阶段;处...

  • 事件监听式绑定

    非IE下(这里事件名不带on)第三个参数表示在捕获期,还是冒泡阶段,可以重复绑定事件,执行顺序按照绑定顺序来执行 ...

  • 事件冒泡(阻止冒泡)和事件捕捉(阻止捕获)

    原理 : DOM事件流(event flow ): 存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。 事件...

  • 事件冒泡、事件捕获、事件委托

    一、DOM事件流 DOM事件流(event flow)存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段,事件...

  • 高阶组件

    事件补充 事件的三个阶段事件捕获阶段处于事件阶段事件冒泡阶段react中的事件为合成事件(根据 W3C spec ...

  • 二、小程序事件

    事件的三个阶段:一、事件的捕获阶段二、事件的处理阶段三、事件的冒泡阶段 事件的声明周期比如说捕获阶段:touchs...

  • DOM事件

    DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。 事件捕获(eve...

  • 实习第七十天(js事件机制)

    DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。 事件捕获(eve...

网友评论

      本文标题:18-事件执行的三个阶段

      本文链接:https://www.haomeiwen.com/subject/cvozoqtx.html