html5移动设备浏览器触屏事件兼容处理

自打诺基亚被苹果干趴下,Google开源Android系统,智能设备数量以及种类以不可阻挡的势头发展,苹果封闭的生态系统,Android开源开放的生态导致,殊途同归地给了我等屌丝开发者相同苦逼的命运,兼容命题。跨平台适配是个痛苦的工作,这里只谈谈近期工作学习相关的部分,苹果设备和安卓设备浏览器对触屏事件的兼容问题。

点我

$(‘#click-me’).on(‘click’,function(){
alert(‘click’);
})
这段代码在pc上浏览器畅通无阻,手机端,拿起华为手机,perfect,换上iPhone56plus,萎了,什么反应都木有,什么情况?是的,伟大的触摸事件兼容性命题被抛出来了。虽然没向苹果公司验证,经过大量测试,应该无误。苹果设备只支持input标签的原生click事件,其他的标签,click无效。那怎么办,当然能办,还有专业的触屏事件,touchstart,touchmove,touchend事件。不多说,上主要代码,

......
$.fn.touch = function(type,selector,cb,cancelBubble){
if(arguments.length == 2){
    cb = selector;
}else if(arguments.length == 3){
    cancelBubble = cb;
    cb = selector;
}
selector = $(this).selector;
    $(document).on(touchEvent.touchstart,selector,function(event){
        if(cancelBubble){
            event.stopPropagation();
            event.originalEvent.stopPropagation();
        }
        if(event.originalEvent && event.originalEvent.targetTouches){
            event = event.originalEvent.targetTouches[0];
        }
        startX = event.clientX;
        touchStartTime = new Date().getTime();
        var _$this = $(this);
        _$this.parents('.t-row').attr("touchstart",1);
        event.$this = _$this;
    });
switch (type){
    case touchEvent.click:

// (this).each(function(){ (document).on(touchEvent.touchend,selector,function(event){
touchEndTime = new Date().getTime();
var _ this= (this);
var longTouchtimeout = ”;
if(cancelBubble){
event.stopPropagation();
event.originalEvent.stopPropagation();
}
if(event.originalEvent && event.originalEvent.changedTouches){
event = event.originalEvent.changedTouches[0];
}
endX = event.clientX;
if((touchEndTime - touchStartTime) < 500 && Math.abs(startX - endX) < 10){
event.this = _this;
cb(event);
}
});
break;
case touchEvent.swipeleft:
(document).on(touchEvent.touchmove,selector,function(event){  
                    if(cancelBubble){  
                        event.stopPropagation();  
                        event.originalEvent.stopPropagation();  
                    }  
                    if(event.originalEvent && event.originalEvent.targetTouches){  
                        event = event.originalEvent.targetTouches[0];  
                    }  
                    var $this = $(this);  
                    if($this.attr(“touchstart”) != 1){  
                        return;  
                    }  
                    endX = event.clientX;  
                    event.$this = $(this);  
                    if(startX - endX < 60){  
                        return;  
                    }  
                    $this.attr(“touchstart”,0);  
                    cb(event);  
                });
(document).on(touchEvent.touchend,selector,function(event){
if(cancelBubble){
event.stopPropagation();
event.originalEvent.stopPropagation();
}
if(event.originalEvent && event.originalEvent.changedTouches){
event = event.originalEvent.changedTouches[0];
}
endX = event.clientX;
var this=ev

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值