对于移动端的点击触控,众所周知 click 有 300ms 延迟。比较好奇目前大家或是各个前端团队都是怎么选择方案的?
抛砖引玉,先说我自己目前所了解的吧:
直接使用 fastclick
优点:全局引入,方便省事
缺点:增加插件冗余?使用 zepto touch
优点:基于 zepto 核心,还提供 singleTap, doubleTap, longTap, swipe 等简单触控类型判断。
缺点:坑多,例如使用 setTimeout 延迟触发事件,需要解决点透问题。直接原生绑定 touchstart / touchend
优点:除了减少插件依赖,好像没想到什么优点。
缺点:需要处理 touchmove scroll 的一些误杀。也不一定就解决快,原生往往预示着需要自己处理一大堆东西。造轮子,封装到自己(团队)的核心框架里
除此之外关于这个问题肯定还有很多方法和话题吧。
例如 IE10 以上可以使用 -ms-touch-action: none 禁用双击判断:
How to implement the -ms-touch-action: none property to disable Double-tap-zoom on Windows Touch devices
还有 Android 上 Chrome 会根据 viewport 设置 user-scalable=no 禁用双击等等。
求补充和分享。