復現條件:chrome 55+ios
1.zepto tap的實現及double fire的緣由chrome
在監聽DOM根節點的時候,touchStart後經過XY的座標誤差,與tapTime的計時判斷Tap/LongTap/doubleTap,而兩次觸發正是入口綁定事件的問題。 瀏覽器
同時綁定了touchStart pointerDown,原先這種寫法只是爲了hack 微軟的Edge瀏覽器和兄弟瀏覽器,可是chorme 從55版本時就開始支持pointer。而我瀏覽版本很高,致使了這個問題能夠復現。
函數
Timline中對js監聽圖
能夠發現 回調函數被執行了兩遍測試
2.zepto tap目前在touch端的的兼容spa
身邊可測試機型有限orm
ios9-10沒問題 事件
安卓 4.4 chrome UC也無此問題zepto
3.解決方案
1.更改源碼 對useragent進行判斷bind eventListener時區別bind
2.節流函數/全局變量Flag
3.tap換成click回調函數