700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 阻止滑动事件_重温DOM事件流 捕获 冒泡 useCapture passive

阻止滑动事件_重温DOM事件流 捕获 冒泡 useCapture passive

时间:2022-03-11 23:35:30

相关推荐

阻止滑动事件_重温DOM事件流 捕获 冒泡 useCapture passive

事件流

dom事件以流的形式传递,先从最外层元素向最内层元素流过,此过程称为捕获,到达最内层元素后又重新向最外层元素流动,此过程称为冒泡。

通过addEventListener绑定事件,默认是在冒泡阶段触发事件,如果useCapture设置为true,则事件是在捕获阶段触发。一个事件只会触发一次,要么冒泡阶段,要么捕获阶段。

可以通过event.stopPropagation()阻止事件流,如果是在捕获阶段阻止了事件流,那也就没有冒泡阶段了。event.stopImmediatePropagation()不仅阻止了事件流,连自身元素的其他相同类型的未执行事件也阻止了

passive介绍

浏览器内核渲染页面时有2个线程,一个主线程,负责js执行,另一个绘制线程,负责绘制画面。当事件触发时,主线程负责执行事件回调函数,完事后告诉绘制线程可以绘制画面了,但是如果主线程一直很忙,事件回调函数就迟迟不能执行,绘制画面也就卡住了,用户就感知到了卡顿。

为什么绘制线程要等待主线程 ?

事件回调函数中可能存在event.preventDefault()语句,这个语句的执行是会影响绘制线程的执行的,所以要等待回调执行结束,才能知道回调函数中是不是有event.preventDefault()

passive如果设置为true,则绘制线程不用等待主线程了,它们可以并行执行,回调函数中的event.preventDefault()不再起作用,如果有,执行到这句时,浏览器会给出警告

EventTarget.addEventListener()​让页面滑动流畅得飞起的新特性:Passive Event Listeners​

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。