阻止默认行为是配合passive使用

在使用lighthouse检测pwa应用时,发现提示下面有下面的警告
html

 

默认使用passive:true提升滚动性能并减小崩溃,passive即顺从的,是指它顺从浏览器的默认行为。设置该属性的目的主要是为了在阻止事件默认行为致使的卡顿。通常咱们写阻止默认行为的代码以下:android

ele.addEventListener('touchmove', function (e) { e.preventDefault();});

//若是咱们是为了阻止页面滚动添加了上述代码,默认行为就是滚动页面,可是若是咱们阻止了这一默认行为,浏览器是没法预先知道的,必须等待事件监听器执行完成后,才知道要去阻止默认行为。等待监听器的执行是耗时的,,有些甚至耗时很明显,这样就会致使页面卡顿。即使监听器是个空函数,也会产生必定的卡顿,毕竟空函数的执行也会耗时。因此就有了passive属性,若是要阻止默认事件能够设置passive:false,
//阻止事件的默认行为时,ios

document.body.addEventListener('touchmove', function (e) {
    e.preventDefault(); //阻止默认的处理方式(阻止下拉滑动的效果)
}, {passive: false}); //passive 参数不能省略,用来兼容ios和android

 

//若是设置了passive为true,同时又阻止默认行为,阻止是不生效的浏览器

document.addEventListener("touchmove", function(event) {
event.preventDefault() //不产生做用
}, {
passive: true
})

 

详细请参考:http://www.javashuo.com/article/p-zdzzqqqb-em.html函数

相关文章
相关标签/搜索