事件流
DOM事件流包括三个阶段:事件捕获阶段,目标阶段,事件冒泡阶段
由外到内会经历捕获阶段,目标阶段,冒泡阶段
当我们触发一个事件的时候(也就是有行为时比如点击等行为),不是立马找到我们触发的DOM然后执行事件函数;他是有一个过程
事件捕获:
首先我们触发一个dom的事件,浏览器并不知道是哪个dom触发的,所以他要一层层寻找,从window对象开始不断经过下级节点直到找到目标节点.
在事件到达目标节点之前的过程就是捕获阶段,然后所有经过的节点都会被捕获到,在事件冒泡阶段的时候所有被捕获到的DOM都会触发事件;
事件冒泡(从内到外)
当事件到达目标节点之后,会从目标节点开始沿着捕获的路线原路返回,触发所有经过的DOM的事件,所以只要是子元素触发事件了,他外面父元素都会触发这个事件,因此如果外面父元素真的有这个事件有事件函数,就会执行事件函数;
注意:事件委托利用的就是事件冒泡;
事件监听用addEventListener(type,listener,useCapture)实现,
1.type: 必须,String类型,事件类型
2.listener: 必须,函数体或者JS方法
3.useCapture: 可选,boolean类型。指定事件是否发生在捕获阶段。默认为false,事件发生在冒泡阶段