• fastclick用法


    移动端点击延迟事件

    1. 移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟。
    2. 原因: 移动端的双击会缩放导致click判断延迟。
      这是为了检查用户是否在做双击。为了能够立即响应用户的点击事件,才有了FastClick。

    解决方式

    1. 禁用缩放 <meta name = "viewport" content="user-scalable=no" > 
      缺点: 网页无法缩放

    2. 更改默认视口宽度 <meta name="viewport" content="width=device-width"> 
      缺点: 需要浏览器的支持

    3. css touch-action touch-action的默为 auto,将其置为 none 即可移除目标元素的 300 毫秒延迟 缺点: 新属性,可能存在浏览器兼容问题

    4. tap事件 zepto的tap事件, 利用touchstart和touchend来模拟click事件
      缺点: 点击穿透

    5. fastclick 原理: 在检测到touchend事件的时候,会通过DOM自定义事件立即出发模拟一个click事件,并把浏览器在300ms之后真正的click事件阻止掉
      缺点: 脚本相对较大


     

    使用:

    //JS    
    // 引入   
    <script type='application/javascript' src='/path/to/fastclick.js'></script>    
    // 使用了jquery的时候    
    $(function() {        FastClick.attach(document.body);    });    
    // 没使用jquery的时候    
    if ('addEventListener' in document) {        
    document.addEventListener('DOMContentLoaded', 
    function() {            
    FastClick.attach(document.body);        
    }, false);}    

     

     在vue中使用 :

    //js    
    // 安装    
    npm install fastclick -S    
    // 引入    
    import FastClick from 'fastclick'    
    // 使用    
    FastClick.attach(document.body); 

    不需要使用fastclick的情况

    以下这几种情况是不需要使用fastclick:

    1、FastClick是不会对PC浏览器添加监听事件
    2、Android版Chrome 32+浏览器,如果设置viewport meta的值为width=device-width,这种情况下浏览器会马上出发点击事件,不会延迟300毫秒。

    <meta name="viewport" content="width=device-width, initial-scale=1">

    3、所有版本的Android Chrome浏览器,如果设置viewport meta的值有user-scalable=no,浏览器也是会马上出发点击事件。
    4、IE11+浏览器设置了css的属性touch-action: manipulation,它会在某些标签(a,button等)禁止双击事件,IE10的为-ms-touch-action: manipulation

    参考:https://github.com/ftlabs/fastclick

  • 相关阅读:
    odoo11 访问MSQL Server等第三发数据源
    学习 Git Rebase
    Arch Linux 启用 MTU 探测
    可控函数
    DIY:从零开始写一个 SQL 构建器
    F# 4.6 预览版正式公布
    使用 Immutable Subject 来驱动 Angular 应用
    如何对付运行时可能为 null 的 Record Type
    Angular Forms
    不要使用 JWT 进行会话管理
  • 原文地址:https://www.cnblogs.com/gitnull/p/10395165.html
Copyright © 2020-2023  润新知