寫scalajs励负,習(xí)慣了阻止所有事件的默認行為,在寫輪播圖的時候棚壁,給輪播圖的父元素同時加上touch事件和click事件杯矩,click事件不會執(zhí)行
參考貼:移動端touch事件影響click事件以及在touchmove添加preventDefault導(dǎo)致頁面無法滾動的解決方法
移動端上點擊屏幕時,會依次觸發(fā)touchstart,touchmove,touchend,click事件袖外。
正確的觸發(fā)過程應(yīng)該是:
touchstart->touchmove->touchend 或者
touchstart->touchend->click
在touchmove中加入如下代碼:
var w = x<0?x*-1:x; //x軸的滑動值
var h = y<0?y*-1:y; //y軸的滑動值
if(w>h){ //如果是在x軸中滑動
event.preventDefault();
}
就是在touchmove中判斷x軸和y軸的移動值史隆,判斷當前是往哪個方向滑動,如果是在x軸上滑動(左右)曼验,就調(diào)用event.preventDefault()方法泌射,如果是在y軸上滑動(上下)或者未滑動粘姜,就不調(diào)用event.preventDefault(),這樣就不會阻止后續(xù)的click事件熔酷。
conclude:
1孤紧、如果有需要用到touch事件做的特效一定要在touchstart或者touchmove中添加event.preventDefault()方法。
2纯陨、在touchstart中如果有event.preventDefault()方法坛芽, 將不會觸發(fā)click事件和a標簽方法留储。在這里可以使用tap代替click翼抠,但是a標簽的話就不太方便了。
3获讳、如果在touchmove中有event.preventDefault()方法阴颖,最好加上方向判斷,當然如果你頁面內(nèi)容不需要滾動條就不需要加判斷了丐膝。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者