折腾过后的fastclick

    起因:在ipad上做了一个查询的小功能,无需登录,应用程序需要长期打开

    遇到的坑:

              1.由于h5时使用的safrai缩放,解决方法meta中viewport  user-scalable=no, 

<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />

              2.如果长安节目会出来粘贴、全选之类的,可以引入如下css解决:

 *{ -webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;

-ms-user-select:none; user-select:none;}

             3. 苹果为了自身一些效果,iphone、ipad等等下都会有一个300毫秒的延时,导致一个卡顿的视觉效果,解决办法:

引入fastclick.js,源码分析可以参考:https://www.cnblogs.com/vajoy/p/5522114.html ,这个兄弟写得很详细

             4. 引入fastclick 后又产生了几个意想不到的问题,比如一些Input框,点击几次后就会有卡顿,程序放置长时间后按钮点击无效等,细查代码+alert调试,发现几个问题,

                  a. 并不是所有的地方都需要fastclick加速,所以FastClick.attach(document.body)可以改为FastClick.attach(document.getElementById('itemId')),这样避免不需要加速的地方受fastclick影响,还有一个其他方式,在不需要加速的class上加入样式名 needsclick 

                 b.长久放置后页面按钮失效,查起原因罪魁祸首就是 event.timeStamp 取值为负,所以对源码做了特殊的处理,

                     b1.在onTouchStart 和 onTouchEnd中  定义变量把这个值存起来curTimeStamp = event.timeStamp; 所有用到这个变量的地方都使用这个临时变量

                     b2.当这个变量为负时做特殊处理

                       if(curTimeStamp <0 ){
                          curTimeStamp  = this.tapTimeout;
                          this.lastClickTime  = curTimeStamp -this.tapDelay -this.tapDelay/2;
                          this.trackingClickStart  = curTimeStamp- this.tapTimeout/2;
                          this.trackingClick = true;

                      }

             然后测试,所有恢复正常,折腾了几天感觉还是挺有意思!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值