手机移动端手指滑动封装
function mobileEvent(domObj){
return{
tap:function(callback){
var startX,startY,startTime;
domObj.addEventListener('touchstart',function(e){
if(e.targetTouches.length>1){
return;
}
startX = e.targetTouches[0].clientX;
startY = e.targetTouches[0].clientY;
startTime = Date.now();
});
domObj.addEventListener('touchend',function(e){
if(e.targetTouches.length>1){
return;
}
var endX = e.targetTouches[0].clientX;
var endY = e.targetTouches[0].clientY;
if(Math.abs(endX- startX)>5 || Math.abs(endY-startY)>5){
return;
}
var endTime = Date.now();
if(endTime-startTime>200){
return;
}
//执行回调函数
callback && callback();
});
},
swipe:function(callback){
var startX,startY,startTime;
domObj.addEventListener('touchstart',function(e){
if(e.targetTouches.length>1){
return;
}
startX = e.targetTouches[0].clientX;
startY = e.targetTouches[0].clientY;
startTime = Date.now();
});
domObj.addEventListener('touchend',function(e){
if(e.changedTouches.length>1){
return;
}
var endX = e.changedTouches[0].clientX;
var endY = e.changedTouches[0].clientY;
var direction = '';
if(Math.abs(endX- startX)>Math.abs(endY-startY) && Math.abs(endX- startX)> 15){
direction = startX>endX ? 'left' : 'right';
}else if(Math.abs(endY-startY)>15){
direction = startY>endY ? 'bottom' : 'top';
}else{
return;
}
var endTime = Date.now();
if(endTime-startTime<150){
return;
}
//执行回调函数
callback && callback(direction);
});
}
}
}