dom事件流分为 捕获阶段 和 冒泡阶段,事件会一层一层传递,从父节点到子节点的过程叫做 捕获阶段;从子节点到父节点传递的过程,叫冒泡阶段,js代码只能执行其中一个阶段,并且传统事件(onclick等)只能得到冒泡事件;daaEventlistener 中最后一个参数userCapture,为true就是捕获阶段调用程序,为false就是冒泡阶段调用程序
1、捕获阶段:如下代码,点击son盒子,先弹出father盒子,再弹出son盒子
var son = document.querySelector('.son');
var father = document.querySelector('.father');
// 1、userCapture是true,捕获阶段 调用程序
son.addEventListener('click',function(){
alert('son');
},true)
father.addEventListener('click',function(){ //捕获阶段,从外层往目标事件传递,先弹出father
alert('father');
},true)
2、冒泡阶段;如下代码,先弹出son,在弹出father
// 2、userCapture是false或者 省略,冒泡阶段 调用程序
son.addEventListener('click',function(){
alert('son');
},false)
father.addEventListener('click',function(){ //冒泡阶段,从目标事件传递到最外层,先弹出fatherson
alert('father');
},false)