Touch對象表示在觸控設(shè)備上的觸摸點,通常是指手指在觸屏設(shè)備或者觸摸板上的操作,在用戶手機在屏幕上滑動時就會實時的觸發(fā)touch事件
touchstart
當(dāng)用戶手指放到屏幕上觸發(fā)touchmove
當(dāng)用戶手指在屏幕上移動時觸發(fā)touchend
當(dāng)用戶手指從屏幕上離開時觸發(fā)
當(dāng)我們在移動端觸發(fā)觸屏事件時運動變量e會返回一個TouchEvent對象,在該對象中包含幾個我們需要的關(guān)鍵信息
- touches:當(dāng)前屏幕上所有手指觸摸點的列表
- targetTouches:當(dāng)前對象上所有觸摸點的列表
- changedTouches:涉及引發(fā)當(dāng)前事件的所有觸摸點的列表
我們一般使用changeTouch來獲取當(dāng)前手指的相對位置
clientX:14.474000930786133
clientY:113.15800476074219
force:1
identifier:0
pageX:14.474000930786133
pageY:113.15800476074219
radiusX:15.131579399108887
radiusY:15.131579399108887
rotationAngle:0
screenX:181
screenY:244
target:li
在移動端我們會使用touch事件來替代mouse事件,并且在移動端的click事件有300ms的延遲,這有時可能會造成用戶感覺反應(yīng)遲緩,所有有時我們需要使用touch事件來替代click事件
var webClick = function (ele, callback) {
if (ele && typeof ele == 'object') {
var isMove = true,
startTime,
endTime;
ele.addEventListener("touchstart", function () {
startTime = Date.now()
})
ele.addEventListener("touchmove", function () {
isMove = true;
})
ele.addEventListener("touchend", function () {
endTime = Date.now();
if (!isMove && endTime - startTime < 150) {
callback && callback();
}
isMove = false;
})
}
}
同樣我們可以使用上面的代碼來監(jiān)聽用戶長按事件,只需要判斷用戶手指在屏幕的停留時間即可