你不知道的passive event listener-让移动端滑动体验起飞(优化页面滑动)

本文介绍了JavaScript的addEventListener的第三个参数,特别是passive event listener的概念和应用。通过设置passive,可以优化移动端页面滚动性能,避免在touch事件中不必要的默认行为检测导致的延迟,从而提高滑动流畅性。同时,文章讨论了兼容性问题和如何检测浏览器对passive的支持。
摘要由CSDN通过智能技术生成

优化前和优化后的对比
在这里插入图片描述
事情的起因是在腾讯面试的时候被问到了,被吊打了,想想也不冤,以前确实从来没碰到过这样的问题,如果以前碰到过还回答不出来,我就去撞墙了

先来个场景:

<script type="text/javascript">
		
	document.addEventListener("touchstart", function(e){
   
	    e.preventDefault()
	})
		
</script>

当你去测试时:
在这里插入图片描述

报错了:Unable to preventDefault inside passive event listener due to target being treated as passive

翻译过来就是: 由于目标被视为被动的,无法在被动事件监听器中阻止默认设置。

此时引出一个词:passive event listener

说这个问题之前,先复习一下addEventListener的第三个参数,你真的足够了解吗?



addEventListener 鲜为人知的第三个参数:

当我们使用addEventListener的时候,我们一般的写法是以下:

target.addEventListener(event, handler)

可能完整些写是这样

target.addEventListener(event, handler, false)

一般情况下,这第三个参数是一个布尔值,叫useCapture,是否使用事件捕获的意思,DOM事件流(event flow)存在三个阶段:事件捕获阶段处于目标阶段事件冒泡阶段

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codingWeb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值