描述 W3C 事件流

描述w3c事件流

什么叫事件流?(事件模型、事件机制)。
多个节点对象对同一个事件的响应顺序,被称作为事件流。

W3C 事件流:

  1. 执行捕获阶段:网景浏览器提出,事件由最不精确的对象(document)依次执行到最精确的目标元素(target)。
  2. 执行目标事件。
  3. 执行冒泡阶段:IE浏览器提出,事件由最精确的目标元素(target) 依次执行到 最不精确的对象(document)。
  4. 事件根据自身是冒泡还是捕获,决定自身在哪一个阶段执行。

window.onload 和 DOMContentLoaded 的对比

  1. window 的 onload 事件:
    DOM节点加载完成 并且所有的资源也加载完成以后才能触发。

  2. DOMContentLoaded事件:
    当DOM节点加载完成以后就执行 不再等待资源。
    DOM2级事件 必须事先处理函数绑定。

分别谈一谈 DOM0 和 DOM2 绑定事件

  • DOM0动态绑定:把匿名函数直接赋值给 DOM对象的事件属性,当事件触发就会执行匿名函数。

特点:

  1. 同一个事件对同一个元素只能绑定1次,否则会覆盖。
  2. 只能执行冒泡。

取消事件:

直接把事件属性的值赋值为null即可。

  • DOM2事件处理函数:w3c提供了一个事件处理函数 addEventListener() 专门用来处理事件。

特点:

  1. 可以给同一个元素绑定同一个事件多次。
  2. 可以控制冒泡和捕获。

删除事件:

使用removeEventListener()方法。

使用场景:

  1. 对同一个元素绑定同一个事件多次 不希望被覆盖。
  2. 可以控制捕获或者冒泡。
  3. DOM2级事件 只能通过事件处理函数绑定(DOMContentLoaded)。

|| 和 && 操作符的返回值?

  1. || 和 && 首先会对第一个操作数执行条件判断,如果其不是布尔值就先进行 Boolean 强制类型转换,然后再执行条件判断。
  2. 对于 || 来说,如果条件判断结果为 true 就返回第一个操作数的值,如果为 false 就返回第二个操作数的值。
  3. && 则相反,如果条件判断结果为 true 就返回第二个操作数的值,如果为 false 就返回第一个操作数的值。
  4. || 和 && 返回它们其中一个操作数的值,而非条件判断的结果。

写一个通用的事件侦听器函数

function (element, type, handler, method) {
    
    
        //DOM2级事件处理程序,false表示在冒泡阶段处理事件程序
        if (element.addEventListener) {
    
    
            element.addEventListener(type, handler, method || false);
        }
        //IE事件处理程序
        else if (element.attachEvent) {
    
    
            element.attachEvent("on" + type, handler);
        }
        //DOM0级
        else {
    
    
            element["on" + type] = handler;
        }
    }

猜你喜欢

转载自blog.csdn.net/weixin_47021982/article/details/113526243
w3c