touchmove 长按_javascript长按事件实现方式

parentObj.addEventListener("touchstart", function (e) {

console.log('touchstart');

timer = setTimeout(function () {

console.log('LongPress');

e.preventDefault();

LongPress(parentObj);

}, 800);

});

parentObj.addEventListener("touchmove", function (e) {

console.log('touchmove');

clearTimeout(timer);

timer = 0;

});

parentObj.addEventListener("touchend", function (e) {

console.log('touchend');

clearTimeout(timer);

//if (timer != 0) {

// alert('这是点击,不是长按');

//}

return false;

});

先获取元素对象,然后设置ontouchstart和ontouchend事件,注意,这里的是事件,和touchstart(方法)有所区别,然后在手机浏览器中,为了避免长按弹出窗口,设置e.preventDefafult()来屏蔽弹出。

其实,这些是比较容易,最常见的实现方式,在网上找资料的时候发现很多其他的实现,比如利用zepto.js插件,这是一个jQuery.js的移动端实现,通过这个库,实现方式如下:

自己也实现了,调试过程中,发现,在微信开发者工具里面,没有问题,longTap能调用,在手机上,就几乎调用不成功,触发的概率非常小,不知道是因为和手机上长按时有微小移动有关系。所以最终放弃了这个实现。

**********************************************分割线**********************************************

关于长按的弹窗菜单怎么屏蔽,网上查了很多资料,都是设置e.preventDefault(),来实现,但是一直用的是

//obj.addEventListener("touchstart", function (e) {

// e.preventDefault();

//}, false);

这个设置的应该是屏蔽触屏的反应,设置屏蔽弹出菜单的应该是这样:

document.oncontextmenu = function (e) {

e.preventDefault();

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值