移动端click屏幕产生200-300 ms的延迟响应-胡新春个人博客
  •  首页
  •  游戏/动漫
  •  日记/生活
  •  程序员式幽默
  •  闲言碎语
  •  博客大计事
  •  留言板
  • 
    移动端click屏幕产生200-300 ms的延迟响应
     作者:网络  发布时间:2017-08-29 22:06:57  访客:614

    问题一、移动设备上的web网页是有300ms延迟的,玩玩会造成按钮点击延迟甚至是点击失效。


    以下是历史原因,来源一个公司内一个同事的分享:


    2007年苹果发布首款iphone上IOS系统搭载的safari为了将适用于PC端上大屏幕的网页能比较好的展示在手机端上,使用了双击缩放(double tap to zoom)的方案,比如你在手机上用浏览器打开一个PC上的网页,你可能在看到页面内容虽然可以撑满整个屏幕,但是字体、图片都很小看不清,此时可以快速双击屏幕上的某一部分,你就能看清该部分放大后的内容,再次双击后能回到原始状态。


    双击缩放是指用手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会将网页缩放至原始比例。


    原因就出在浏览器需要如何判断快速点击上,当用户在屏幕上单击某一个元素时候,例如跳转链接<a href="#"></a>,此处浏览器会先捕获该次单击,但浏览器不能决定用户是单纯要点击链接还是要双击该部分区域进行缩放操作,所以,捕获第一次单击后,浏览器会先Hold一段时间t,如果在t时间区间里用户未进行下一次点击,则浏览器会做单击跳转链接的处理,如果t时间里用户进行了第二次单击操作,则浏览器会禁止跳转,转而进行对该部分区域页面的缩放操作。那么这个时间区间t有多少呢?


    在IOS safari下,大概为300毫秒。这就是延迟的由来。造成的后果用户纯粹单击页面,页面需要过一段时间才响应,给用户慢体验感觉,对于web开发者来说是,页面js捕获click事件的回调函数处理,需要300ms后才生效,也就间接导致影响其他业务逻辑的处理。


    解决方案:

    fastclick可以解决在手机上点击事件的300ms延迟

    zepto的touch模块,tap事件也是为了解决在click的延迟问题


    触摸事件的响应顺序

    1、ontouchstart 
    2、ontouchmove 
    3、ontouchend 
    4、onclick


    问题二、ios系统中元素被触摸时产生的半透明灰色遮罩怎么去掉


    ios用户点击一个链接,会出现一个半透明灰色遮罩, 如果想要禁用,可设置-webkit-tap-highlight-color的alpha值为0,也就是属性值的最后一位设置为0就可以去除半透明灰色遮罩

    a,button,input,textarea{-webkit-tap-highlight-color: rgba(0,0,0,0;)}


    问题三、部分android系统中元素被点击时产生的边框怎么去掉


    android用户点击一个链接,会出现一个边框或者半透明灰色遮罩, 不同生产商定义出来额效果不一样,可设置-webkit-tap-highlight-color的alpha值为0去除部分机器自带的效果


    a,button,input,textarea{-webkit-tap-highlight-color: rgba(0,0,0,0;)
    -webkit-user-modify:read-write-plaintext-only; 
    }


    -webkit-user-modify有个副作用,就是输入法不再能够输入多个字符,另外,有些机型去除不了,如小米2 对于按钮类还有个办法,不使用a或者input标签,直接用div标签。


    参考《如何去除android上a标签产生的边框

    点评一下

    
    程序:HXC博客v2.0 主题:HXC博客前端Funs主题    基于CodeIgniter框架构建
    博客平稳运行2年+