博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
手机端 click 事件 300ms 左右延迟
阅读量:6374 次
发布时间:2019-06-23

本文共 679 字,大约阅读时间需要 2 分钟。

延迟原因

早期在iPhone的Safari浏览器中,为了实现双击放大效果,当用户点击屏幕时会判断在300ms内(注意:300ms是在touchend之后)是否有第二次点击,如果有就是双击,如果没就是单击,触发click事件。此过程可拆解为:touchstart->touchmove->touchend->click

解决思路

touchstart/touchend是没有延迟的,可以用touchend来模拟快速点击行为。zepto的tap或fastclick.js都是这个原理,只是zepto的tap事件统一在document的touchend时触发的。

延迟导致问题及解决方法

  • zepto tap穿透
    • 现象描述:遮罩层中有一个标签绑定tap事件,触发此事件遮罩层消失,该标签下方有一个绑定click事件的元素。当点击上层标签时,同时也触发下层元素的click事件。
    • 原因:touchend后继续等待300ms发现没有其他行为了,则继续触发click,由于这时遮罩层已经消失,所以当前click事件的target就在底层元素上。
    • 解决方法:
      • 直接将上层元素的tap事件换成click事件(会出现300ms的延迟触发事件)。
      • 可以给元素的消失做一个fade效果,类似jQuery里的fadeOut,并设置动画duration大于300ms,这样当延迟的 click 触发时,就不会“穿透”到下方的元素了。
      • 使用
  • H5页面click事件反映迟钝:使用
$(function() {	FastClick.attach(document.body);});复制代码

转载地址:http://cunqa.baihongyu.com/

你可能感兴趣的文章
ASP.NET MVC生命周期介绍
查看>>
【CLR-sos调试】关于方法表继承调用问题的总结
查看>>
REST手记(一):对URI隧道技术以及CRUD操作的理解
查看>>
如何判断论文是否被SCI收录-----未经验证~
查看>>
强势 中势 弱势 三势后市形态及五粮液实战分析
查看>>
Android之浮动小窗口
查看>>
Comparison method violates its general contract
查看>>
QT 平台
查看>>
Icecast流媒体广播的设置(转)
查看>>
家里蹲大学数学杂志期刊模式目录
查看>>
数据结构:最小生成树--Kruskal算法
查看>>
Swift_1_基本数据类型
查看>>
POJ 1849 Two(遍历树)
查看>>
Recurrent Neural Network[CTC]
查看>>
VS注释与取消注释快捷键
查看>>
深入解析Vuex实战总结
查看>>
.NET编译项目时出现《此实现不是 Windows 平台 FIPS 验证的加密算法的一部分》处理方法...
查看>>
流水落花春去也
查看>>
从.NET中委托写法的演变谈开去(下):性能相关
查看>>
C# 多人聊天程序
查看>>