JavaScript touch / touch事件

Touch對象表示在觸控設(shè)備上的觸摸點,通常是指手指在觸屏設(shè)備或者觸摸板上的操作,在用戶手機在屏幕上滑動時就會實時的觸發(fā)touch事件

  • touchstart
    當(dāng)用戶手指放到屏幕上觸發(fā)

  • touchmove
    當(dāng)用戶手指在屏幕上移動時觸發(fā)

  • touchend
    當(dāng)用戶手指從屏幕上離開時觸發(fā)

當(dāng)我們在移動端觸發(fā)觸屏事件時運動變量e會返回一個TouchEvent對象,在該對象中包含幾個我們需要的關(guān)鍵信息

  1. touches:當(dāng)前屏幕上所有手指觸摸點的列表
  2. targetTouches:當(dāng)前對象上所有觸摸點的列表
  3. 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)聽用戶長按事件,只需要判斷用戶手指在屏幕的停留時間即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容