vue引入fastclick语法没错,但是点击控制台一直报错
来源:6-7 Vue项目预热 - 项目代码初始化
慕先生2182229
2019-05-30
老师好,vue引入fastclick语法没错,但是点击控制台一直报错,据说是谷歌浏览器升级缘故,怎么解
1回答
-
六一888
2019-06-02
这句警告翻译过来就是:不能给passive(被动的)事件监听器preventDefault(取消事件的默认动作),因为它被认为是passive。
当我们在滚动页面的时候(通常是我们监听touch事件的时候),页面其实会有一个短暂的停顿(大概200ms),浏览器不知道我们是否要preventDefault,所以它需要一个延迟来检测。这就导致了我们的滑动显得比较卡顿。
从Chrome 51开始,passive event listener被引进了Chrome,我们可以通过对addEventListener的第三个参数设置{ passive: true }来避免浏览器检测这个我们是否有在touch事件的方法里调用preventDefault。在这个时候,如果我们依然调用了preventDefault,就会在控制台打印一个警告。告诉我们这个preventDefault会被忽略。
当我们给addEventListener的第三个参数设置了{ passive: true },这个事件监听器就被称为passive event listener。
从Chrome 56开始,如果我们给document绑定touchmove或者touchstart事件的监听器,这个passive是会被默认设置为true以提高性能。但是我们大多数人并不知道这点,并且依旧调用了preventDefault。这并不会导致什么页面崩溃级的错误,但是这可能导致我们忽略了一个页面性能优化的点,特别是在移动端这种更加重视性能优化的场景下。
而在火狐上面测试就不会有这种的报错,这个报错是谷歌自带的,从根本上来讲不是报错,只是一种提醒。
012019-06-05
相似问题