什么是被动事件监听器?

为了提高渐进式networking应用程序的性能,我尝试了一些新的function, Passive Event Listeners ,我发现很难理解这个概念。

什么是Passive Event Listeners ,在我们的项目中需要什么?

被动事件监听器是一种新兴的Web标准,在Chrome 51中提供了一项新function,可提高滚动性能。 Chrome版本说明。

它使开发人员能够selectjoin,以更好地滚动性能,无需滚动来屏蔽触摸和滚轮事件监听器。

问题:所有现代浏览器都具有线程滚动function,即使在运行昂贵的JavaScript时也能够平滑地运行滚动function,但是由于需要等待任何touchstarttouchmove处理程序的结果,这种优化可能会部分失败,这可能会阻止完全滚动通过在事件上调用preventDefault()

解决scheme: – {passive:true}

通过将触摸或车轮监听器标记为被动,开发人员承诺处理程序不会调用preventDefault禁用滚动。 This frees the browser up to respond to scrolling immediately without waiting for JavaScript, thus ensuring a reliably smooth scrolling experience for the user

 addEventListener(document, "touchstart", function(e) { console.log(e.defaultPrevented); // will be false e.preventDefault(); // does nothing since the listener is passive console.log(e.defaultPrevented); // still false }, Modernizr.passiveeventlisteners ? {passive: true} : false); 

DOM Spec , Demo Video , Explainer Doc