• 移动端点击延迟的解决方案


    • 前置知识:
      在移动端多了touch的三个touch事件。
      所有事件触发顺序为:(touchstart——touchmove——touchend)——mouseover——mousedown——mouseup——click。
      当有touchmove触发时,就不会再触发touchend之后的事件。

    • 有两个库,一个是zepto,另一个是fastclick,它们都可以解决点击延迟的问题。
      其中,zepto有一个自定义事件tap,它是一个没有延迟的click事件。
      而fastclick是在touchend之后生成一个click事件,并立即触发这个click,再取消原本的click事件。
      这两者的原理都是一样的,都是在touchend之后触发,一个是触发它自己定义的tap事件,一个是触发原生click。

    • 这里有一个关键的问题,就是touchend之后不能够每次都触发tap,因为有可能用户是在上下滑并不是在点击,不然的话直接监听touchstart就好了。所以怎么判定用户是点击还是在上下滑呢?Zepto是用的位移偏差,即记录下touchstart的时候的初始位移,然后用touchend的时候的位移减掉初始位移的偏差,如果这个差值在30以内,则认为用户是点击,大于30则认为是滑动。而fastclick是用的时间偏差,分别记录touchstart和touchend的时间戳,如果它们的时间差大于700毫秒,则认为是滑动操作,否则是点击操作。

  • 相关阅读:
    KEIL5.25生成.bin文件步骤
    【转】树莓派网线直连笔记本电脑
    由编译器指定数组长度带来的一个问题
    【转】C/C++位域结构深入解析
    【转】大小端存储模式精解
    【转】树莓派入门之装系统
    【转】树莓派Raspberry Pi
    stm32的双向io口
    小记之while循环条件的操作位置
    【转】浮点数在计算机中存储方式
  • 原文地址:https://www.cnblogs.com/cag2050/p/7503671.html
Copyright © 2020-2023  润新知