JS之事件执行顺序

作者: 相遇一头猪 | 来源:发表于2019-07-26 15:19 被阅读1次

几天前,群上忽然有人提出一个问题,如下:

  <div class="parent">
      <div class="child"></div>
  </div>
  
  window.onload = function() {
        let parent = document.querySelector('.parent');
        let child = document.querySelector('.child');
        
        parent.addEventListener('click', function() {
            console.log(1);
        }, true);
        parent.addEventListener('click', function() {
            console.log(2);
        });
        
        child.addEventListener('click', function() {
            console.log(4);
        });
        child.addEventListener('click', function() {
            console.log(3);
        }, true);       
    }

考虑到事件流是先捕获后冒泡,我毫不犹豫地说是 1342。那对了吗?

看一下输出结果:

image.png

现在我点一下中间的div:

image.png

结果是1432。当我们的事件绑定在非目标元素时(这里的parent),它是按照事件流的顺序来的,而目标元素的事件执行顺序确是按照代码的书写顺序来的。下面把代码顺序换一下:

      child.addEventListener('click', function() {
          console.log(3);
      }, true);
      child.addEventListener('click', function() {
          console.log(4);
      });

现在再次点击child:

image.png

顺序换过来了。

然而,如果要兼容iE8及以下,只能使用attachEvent来绑定事件,虽然也可以绑定多个事件,但是事件的执行顺序确是与代码顺序相反。

相关文章

  • js 事件执行顺序

    为什么需要addEventListener? 先来看一个片段: html代码 事件执行顺序 用on的代码 wind...

  • js事件轮询机制

    这段代码的执行顺序,根据执行顺序分析、JS事件轮询原理 执行逻辑 从代码执行角度来看 首先分析同步代码、在面的代码...

  • JS之事件执行顺序

    几天前,群上忽然有人提出一个问题,如下: 考虑到事件流是先捕获后冒泡,我毫不犹豫地说是 1342。那对了吗? 看一...

  • JS之执行顺序

    JS的解析过程分为两个阶段:预编译期(预处理)与执行期 预编译期 JS会对本代码块中的所有var声明的变量和函数进...

  • JS运行机制

    JS为一门单线程语言;JS的执行机制是Event Loop事件循环 JS单线程,就是按语句出现顺序执行--等待前一...

  • Event Loop例子

    事件循环:macrotask与microtask JS的执行机制如图: 分析一道执行顺序的例子 第一次事件循环流程...

  • 前端进阶|第四天从setTimeout、Promise看js 的

    要理解这几个函数的执行顺序,需要先明确js的执行机制。Javascript是单线程语言,事件的调度机制是事件循环(...

  • js中的事件冒泡

    js中如果元素是父子关系,事件会产生冒泡现象,而且执行顺序是 从 子到爷如: 点击 3 执行效果是: 阻止事件冒泡...

  • 前端问(面试)题

    dom执行顺序 事件委托原理 原型链的作用,与作用域链的区别 js事件轮询原理、JavaScript的运行机制 结...

  • JavaScript运行机制

    一.js是一门单线程的语言,js是按照语句出现的顺序执行的 二.Javascript事件循环 因为js是单线程,所...

网友评论

    本文标题:JS之事件执行顺序

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