使用js实现长按监听

实现思路:通过对触摸开始、移动、结束的监听来判断用户的操作是不是长按。如果触发了移动事件,说明是滑动,如果触摸开始和结束的时间间隔不超过380ms说明是点击,这里就要借助超时器来实现了,否则的话就是长按了。下面来看代码实现:

const box=document.documentElement
function a(){console.log('longtab')}

function addLongtabListener(target,callback){
    let timer=0   // 初始化timer

    target.ontouchstart=()=>{
        timer=0   // 重置timer
        timer=setTimeout(()=>{callback();timer=0},380)  // 超时器回调能成功执行,说明是长按
    }

    target.ontouchmove=()=>{
        clearTimeout(timer)    // 如果来到这里,说明是滑动,清除超时器,不执行回调
        timer=0 
    }

    target.ontouchend=()=>{   // 到这里如果timer有值,说明此触摸时间不足380ms,是点击,清除超时器,不执行回调
       if(timer){clearTimeout(timer)}
    }
}

addLongtabListener(box,a)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值