关于zepto在chrome中触发两次的解决方案

复现条件:chrome 55+

 

1.zepto tap的实现及double fire的原因

在监听DOM根节点的时候,touchStart后通过XY的坐标偏差,与tapTime的计时判断Tap/LongTap/doubleTap,而两次触发正是入口绑定事件的问题。 

同时绑定了touchStart pointerDown,原先这种写法只是为了hack 微软的Edge浏览器和兄弟浏览器,但是chorme 从55版本时就开始支持pointer。而我浏览版本很高,导致了这个问题可以复现。

Timline中对js监听图

可以发现 回调函数被执行了两遍

2.zepto tap目前在touch端的的兼容

身边可测试机型有限

ios9-10没问题 

安卓 4.4 chrome UC也无此问题

3.解决方案
1.更改源码 对useragent进行判断bind eventListener时区别bind
2.节流函数/全局变量Flag
3.tap换成click

posted on 2017-03-03 16:52  natureless  阅读(594)  评论(1编辑  收藏  举报