Answers:
对于那些初次收到此警告的用户,这是由于最近才在浏览器中实现了称为“ 被动事件侦听器”的最新功能(2016年夏季)。从https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md:
被动事件侦听器是DOM规范中的一项新功能,使开发人员可以选择消除滚动而阻塞触摸和滚轮事件侦听器,从而选择更好的滚动性能。开发人员可以使用{passive:true}注释触摸和滚轮侦听器,以表示他们将永远不会调用preventDefault。该功能已在Chrome 51,Firefox 49和WebKit中提供。有关完整的官方说明,请在此处了解更多信息。
另请参阅:什么是被动事件侦听器?
如果要通过JavaScript库间接处理事件,则可能会受该特定库对功能的支持的支配。截至2019年12月,似乎所有主要图书馆都未实现支持。一些例子:
preventDefault()
-是否可以禁止显示此警告?
这隐藏了警告消息:
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 });
}
}
};
preventDefault()
,请指定passive: false
。如果不是,请指定passive: true
。如果您未指定任何警告,则只会收到警告。如果您指定passive: true
和preventDefault()
被调用,它导致一个错误,而不是防止违约。passive
在这里指定不是hack。这是解决方案。这就是警告所要的!
我找到了适用于jQuery 3.4.1 slim的解决方案
取消缩小后,按如下所示添加{passive: true}
到第1567行的addEventListener函数:
t.addEventListener(p, a, {passive: true}))
没有任何休息和灯塔审核不会抱怨听众。