移动端click事件延迟300ms的原因以及解决办法
1.产生的原因
在移动端触发时间会按照 touchstart,touchmove,touchend,click 顺序触发;触发touchend,click之间会有200-400不等的时间延时(因为移动端需要判断用户是不是想要进行双击)
2.解决方法
(1)FastClick是 FT Labs 专门为解决移动端浏览器 300 毫秒点击延迟问题所开发的一个轻量级的库。简而言之,FastClick 在检测到 touchend 事件的时候,会通过 DOM 自定义事件立即触发一个模拟click 事件的click事件(自定义事件),并把浏览器在 300 毫秒之后真正触发的 click 事件阻止掉。
window.addEventListener( "load", function() {
FastClick.attach( document.body );
}, false );
(2)禁用缩放
当HTML文档头部包含如下meta标签时:
<meta name="viewport" content="user-scalable=no">
<meta name="viewport" content="initial-scale=1,maximum-scale=1">
表明这个页面是不可缩放的,那双击缩放的功能就没有意义了,此时浏览器可以禁用默认的双击缩放行为并且去掉300ms的点击延迟。
本文深入解析移动端点击事件存在300ms延迟的原因,探讨了触发touchend与click间延时的背景,即为了判断用户是否进行双击操作。并提供了两种有效解决方案:一是使用FastClick库,二是通过设置meta标签禁用页面缩放,从而消除双击缩放行为及点击延迟。
743

被折叠的 条评论
为什么被折叠?



