请解释下JS事件捕获
了解了js事件冒泡,之所以冒泡是因为点击了子元素的时候,父元素也相当于被点击了,因此会冒泡。
那事件捕获是什么,有什么用
js?事件捕获
------解决方案--------------------捕获事件流
事件的处理将从DOM层次的根开始,而不是从触发事件的目标元素开始,事件被从目标元素的所有祖先元素依次往下传递。在这个过程中,事件会被从文档根到事件目标元素之间各个继承派生的元素所捕获,如果事件监听器在被注册时设置了useCapture属性为true,那么它们可以被分派给这期间的任何元素以对事件做出处理;否则,事件会被接着传递给派生元素路径上的下一元素,直至目标元素。事件到达目标元素后,它会接着通过DOM节点再进行冒泡。
------解决方案--------------------5.3.1主体顺序 先 捕获->冒泡
a.先执行事件捕捉阶段,把 触发事件元素 的所有的父元素 由外向里 执行一遍同名事件;
b.中间执行 触发事件元素 的 同名0级事件和2级事件;(注:此处按照代码顺序执行)
c.再执行事件冒泡阶段,由里到外 执行同名事件;(注:此处如果有0级事件,则冒泡和0级事件按照代码顺序来执行)
------解决方案--------------------事件处理过程:事件捕获阶段——目标处理阶段——事件冒泡阶段;
如果浏览器对捕获处理提供支持(ie早期版本不支持),就可以在捕获阶段中对事件进行处理(例如取消事件,这样事件就不会再往下传来,这和客户端捕获事件后,不把事件信息发给服务器一个道理),事件捕获实际就是事件的预处理,可以返回一个处理结果,如果false就取消事件,下流部分就知道事件发生过,(例如:如果你想在外层div区域中屏蔽click事件,你就可以给这个div定义一个捕获事件,这样即使点击div里面的按钮,你也可以通过事件捕获后后的处理把这个click事件过滤的,起到屏蔽的作用。),不仅如此,你可以在事件捕获的处理过程中做任何过程能做的。