c语言编程笔录

首页 >   > 笔记大全

笔记大全

对Tap事件和Tap点透原理的分析

更新时间:2023-12-10

Tap事件的分析

Tap事件是指在移动设备上进行的轻触操作,当用户在触摸屏幕时,会触发该事件。它可以和Click事件看作近似,但是Tap事件的响应速度更快。它适用于移动设备的Web应用程序,可以提高用户体验。

window.addEventListener('touchstart',function(e) {
    startTime=Date.now();
},false);
window.addEventListener('touchend',function(e) {
    //判断是否为Tap事件
    if (Date.now() - startTime < 200) {
        //处理Tap事件
        console.log('Tap事件');
    }
},false);

Tap点透原理的分析

Tap点透是指在移动设备上进行的轻触操作,触发该操作的同时会穿透到下方的链接或按钮,造成误操作。它是移动端Web应用程序中常遇到的问题。

该问题存在的原因是,当用户点击一个页面元素时,先触发元素的touchend事件,再触发下面元素的click事件。如果touchend事件执行较慢,则会误认为用户想要点击下面的元素。为了解决这个问题,我们通常会使用preventDefault或stopPropagation方法来禁用click事件或停止时间冒泡。

//简单防抖
function debounce(fn,wait){
    var timer=null;  // 借助闭包
    return function() {
        if(timer !==null) {
            clearTimeout(timer); //清除已经存在的定时器,不进行下一次计时
        }
        timer=setTimeout(fn,wait);  //重新计时
    }
}
window.addEventListener("touchend",debounce(function(e){
    //阻止默认事件
    e.preventDefault();
},500),false);

Touch事件的分析

Touch事件是指在移动设备上进行的多点触控操作,包括了tap、swipe、pinch等操作。它在移动端Web应用程序中展示出了强大的互动性。可以实现一些特殊效果,极大地提升了用户体验。

window.addEventListener('touchstart',function(e) {
    //获取触摸点数
    console.log("touch point:"+e.touches.length);
    //获取第一个触摸点坐标值
    console.log("touch point x:"+e.touches[0].clientX+",y:"+e.touches[0].clientY);
},false);

总结

Tap事件和Touch事件都是移动端Web应用程序中常用的事件,能够为用户提供良好的操作体验。需要注意的是,在使用Tap事件时可能会产生Tap点透问题,需要使用preventDefault或stopPropagation等方法进行处理。在实现诸如拖拽等特殊效果时,可以使用Touch事件的相关属性和方法。