H5 开发中对touch事件的处理
export function handleTouch(element, callback, left, right) {
var startX, startY, startT, isMove, isTouchEnd, deltaX, direction, pageWidth = document.body.clientWidth
element.addEventListener("touchstart", function (e) {
if (e.touches.length === 1 || isTouchEnd) {
var touch = e.touches[0]
startX = touch.pageX
startY = touch.pageY
startT = +new Date()
isMove = false
isTouchEnd = false
}
element.addEventListener("touchmove", function (e) {
if (isTouchEnd) return
var touch = e.touches[0]
deltaX = touch.pageX - startX;
var deltaY = touch.pageY - startY;
isMove = true
direction = deltaX > 0 ? "right" : "left";
})
})
element.addEventListener("touchend", function (e) {
var deltaT = +new Date() - startT;
if (isMove && !isTouchEnd) {
isTouchEnd = true
if (Math.abs(deltaX) / pageWidth < 0.20) {
} else {
console.log('滑动距离大于屏幕的20%', deltaX, pageWidth)
direction === "left"
? callback(left)
: callback(right)
}
}
})
}