什么是被动事件监听器?
为了提高渐进式networking应用程序的性能,我尝试了一些新的function, Passive Event Listeners
,我发现很难理解这个概念。
什么是Passive Event Listeners
,在我们的项目中需要什么?
被动事件监听器是一种新兴的Web标准,在Chrome 51中提供了一项新function,可提高滚动性能。 Chrome版本说明。
它使开发人员能够selectjoin,以更好地滚动性能,无需滚动来屏蔽触摸和滚轮事件监听器。
问题:所有现代浏览器都具有线程滚动function,即使在运行昂贵的JavaScript时也能够平滑地运行滚动function,但是由于需要等待任何touchstart
和touchmove
处理程序的结果,这种优化可能会部分失败,这可能会阻止完全滚动通过在事件上调用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