微信小程序> [小程序之菜鸟填坑-1]PassiveEventListeners被动事件监听器-js触发小程序事件-小程序模拟点击

[小程序之菜鸟填坑-1]PassiveEventListeners被动事件监听器-js触发小程序事件-小程序模拟点击

浏览量:2987 时间: 来源:spinor4d
1.

在小程序开发的时候提醒

[Violation]Addednon-passiveeventlistenertoascroll-blocking'touchstart'event.Considermarkingeventhandleras'passive'tomakethepagemoreresponsive.2.

违反:没有添加被动事件监听器来阻止’touchstart’事件,请考虑添加事件管理者’passive’,以使页面更加流畅。

3.

出现如上提示这可能是由于console的过滤器选择了Verbose

Verbose-冗长,就是事无具细的把所有log显示出来Info-显示开发者自定义的log及错误信息Warnings-显示危险信息Errors-显示错误信息4.

一般默认的是Info,不会提示这个提醒,虽然这并不影响代码的正常运行,但是既然提醒了还是弄明白是什么原因的好一些。

5.

问题就是由于之前改动过这个导致的。

6.

这是因为Chrome51版本以后,Chrome增加了新的事件捕获机制-PassiveEventListeners

7.

PassiveEventListeners就是告诉前页面内的事件监听器内部是否会调用preventDefault函数来阻止事件的默认行为,以便浏览器根据这个信息更好地做出决策来优化页面性能。当属性passive的值为true的时候,代表该监听器内部不会调用preventDefault函数来阻止默认滑动行为,Chrome浏览器称这类型的监听器为被动(passive)监听器。目前Chrome主要利用该特性来优化页面的滑动性能,所以PassiveEventListeners特性当前仅支持mousewheel/touch相关事件

8.

旧版的事件捕获代码如下:

document.addEventListener("click",fn,false/true)9.

第三个参数决定了fn函数是在冒泡还是捕获阶段触发。新版第三个参数不但可以是布尔值,还可是一个对象

document.addEventListener("mousewheel",fn,{passive:true})10.

由于passive对象只在Chrome浏览器中支持,所以这里需要做一个兼容处理

varpassiveSupportedfalse;try{varoptionsObject.defineProperty({},"passive",{get:function(){passiveSupportedtrue;}});window.addEventListener("test",null,options);}catch(err){}functionfn(){console.log("fn")}document.addEventListener("mousewheel",fn,passiveSupported?{passive:true}:false)11.

再看Chrome调试会发现,Chrome已经不再出现让人头大的提醒。希望对您学习javascript有所帮助,关了个注呗。

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎