[Intervention] Unable to preventDefault inside passive event listener due to target being treated as

Posted wyliunan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Intervention] Unable to preventDefault inside passive event listener due to target being treated as相关的知识,希望对你有一定的参考价值。

这篇是关于题目的报错。

技术分享图片

那么什么情况下回遇到这个错误呢。

由于浏览器必须要在执行事件处理函数之后,才能知道有没有掉用过 preventDefault() ,这就导致了浏览器不能及时响应滚动,略有延迟。 所以为了让页面滚动的效果如丝般顺滑,从 chrome56 开始,在 window、document 和 body 上注册的 touchstart 和 touchmove 事件处理函数,会默认为是 passive: true。浏览器忽略 preventDefault() 就可以第一时间滚动了。 举例: wnidow.addEventListener(‘touchmove‘, func) 效果和下面一句一样 wnidow.addEventListener(‘touchmove‘, func, { passive: true });
这样的处理就导致了一个问题:

如果在以上这 3 个元素的 touchstart 和 touchmove 事件处理函数中调用 e.preventDefault() ,会被浏览器忽略掉,并不会阻止默认行为。

一个有效的解决方法是
注册处理函数时,用如下方式,明确声明为不是被动的
window.addEventListener(‘touchmove‘, func, { passive: false });

这样就不会在出发touch事件的时候在控制台报错了。

以上是关于[Intervention] Unable to preventDefault inside passive event listener due to target being treated as的主要内容,如果未能解决你的问题,请参考以下文章

滑动时报错[Intervention] Unable to preventDefault inside passive event listener due to target being treat

[Intervention] Unable to preventDefault inside passive event listener due to target being treated as

Web前端笔记-解决[Intervention] Unable to preventDefault inside passive event listener due to target being

mui执行滑动事件: Unable to preventDefault inside passive event listener

Unable to preventDefault inside passive event listener due to target being treated as passive.

Unable to preventDefault inside passive event listener due to target being treated as passive?