DOM事件流(event flow )分为以下三个阶段:
事件捕获阶段
事件捕获(event capturing):意思是当鼠标点击或者触发dom事件的时候,浏览器会从这个事件的元素根节点开始一层一层的传播至当前元素,即我们触发了这个元素,如果它的父元素通过事件捕获方式注册了对应的事件的话,会先触发父元素绑定的事件。
处于目标阶段
事件到达目标节点时,就到了目标阶段,事件在目标节点上被触发
事件冒泡阶段
事件冒泡(dubbed bubbling):与事件捕获恰恰相反,事件冒泡顺序是由内到外进行事件传播,直到根节点,也就是说从目前元素开始一级一级往上进行事件传播。
dom标准事件流的触发的先后顺序为:先捕获再冒泡,即每当我们进行事件触发的时候,先进行捕获事件的触发,再进行冒泡。目前除IE10及以下不支持捕获型事,其他浏览器如IE11、Chrome 、Firefox、Safari等浏览器则同时存在。
不支持冒泡的事件有
UI事件
load, unload,scroll,resize
焦点事件
blur, focus
鼠标事件
mouseleave, mouseenter
支持冒泡的事件有
点击事件
click ,dbclick ,
键盘事件
keydown ,keyup ,
鼠标事件
mousedown ,mousemove ,mouseout
,mouseover ,mouseup ,scroll