标签:listener 浏览器 target 事件处理 preventDefault passive mui event
问题描述:点击返回按钮时,每次在控制台都出现如下错误:
mui.min.js:13 Unable to preventDefault inside passive event listener due to target being treated as passive.
解决办法:
定位到mui.min.js的报错行,发现报错的代码是a.preventDefault(),遂在mui.min.js中将a.preventDefault()注释掉,问题解决。
问题分析:
preventDefault() 函数具体实现什么功能?注释掉对具体功能有没有影响呢?
preventDefault() 方法阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交)。例如:可以利用event.preventDefault()阻止a标签跳转。
由于浏览器无法预先知道一个事件处理函数中会不会调用 preventDefault(),它需要等到事件处理函数执行完后,才能去执行默认行为,然而事件处理函数执行是要耗时的,这样一来就会导致页面卡顿,也就是说,当浏览器等待执行事件的默认行为时,大部分情况是白等了。
如果 Web 开发者能够提前告诉浏览器:“我不调用 preventDefault 函数来阻止事件事件行为”,那么浏览器就能快速生成事件,从而提升页面性能,Passive event listeners 的提出就解决了这样的问题。
在我的项目中,通过注释掉preventDefault()成功解决了控制台报错的问题,暂时未发现影响其他功能。
标签:listener,浏览器,target,事件处理,preventDefault,passive,mui,event
来源: https://blog.51cto.com/u_7034817/2785598
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。