DOM0和DOM2事件绑定的区别

  • DOM0和DOM2事件绑定的区别?

    1. 语法上区别
      [DOM0] box.onclick = function() {};
      [DOM2] box.addEventListener("click",function(){});

    2. 底层机制上的区别
      [DOM0] 就是给元素的某个事件绑定方法(有效绑定的方法只有一个)
      [DOM2] 基于事件池机制,每次增加一个方法,就向事件池中增加一个方法,当事件触发时,依次执行其中的方法 ===> 发布订阅模式模拟事件池机制(可以给同一个事件绑定多个不同的方法)

    3. DOM2中可以给一些特殊的事件类型绑定方法,这些事件DOM0不支持 比如D OMContentLoaded transitionend。。。。
      $(document).ready() ===> $(function(){})
      window.onload 区别

  • DOM2的事件池机制

    1. 基于addEventListener / attachEvent(IE6-8) 向事件池中增加方法, removeEventListener / dettachEvent .... 新版本的浏览器会对元素和事件类型增加的方法做重复校验---同一个元素同事件同方法,但是IE6-8不能够实现.
    2. 当事件触发,会按照事件池中方法增加的顺序依次来执行,但是IE6-8执行的顺序不固定的....