为滚动阻止“touchstart”事件添加了非被动事件侦听器

突然间,今天突然间,我开始在我们网站的每个页面上看到这个

Added non-passive event listener to a scroll-blocking 'touchstart' event. Consider marking event handler as 'passive' to make the page more responsive 

它不仅仅是一两次……它就像成千上万的……

在此处输入图像描述

他们疯了。

阻止洪水泛滥的唯一方法就是注释掉这条线

   

我阅读了其他关于这种违规意味着什么的post,但是我真的看不到我在两小时前和现在之间做了什么不同(我做了一次完全回滚只是为了看看是否有帮助)

它几乎就像有人把一个bug放到了jquery.min.js中,但是我非常怀疑这个原因然后每个人都会得到它。

有任何想法吗? 我试着尽我所能调试,我仍然不知道是什么原因造成的?!?

UPDATE

我替换了所有 width 这删除了99%的违规行为,

好吧再多挖一点,这不是一个新的行为,它已经被报道了一段时间,jQuery仍然没有修复它。

问题在于,对于处理程序是passive ,必须确定永远不会调用preventDefault()但jQuery事先并不知道…

我能给你的唯一提示是更改你的控制台日志记录级别并删除“详细”。 关于解决这个问题的想法,请关注这个问题 。

这解决了我的问题:

 jQuery.event.special.touchstart = { setup: function( _, ns, handle ){ if ( ns.includes("noPreventDefault") ) { this.addEventListener("touchstart", handle, { passive: false }); } else { this.addEventListener("touchstart", handle, { passive: true }); } } };