处理移动端click事件300毫秒延迟。FastClick 是一个简单,易于使用的js库用于消除在移动浏览器上触发click事件与一个物理Tap(敲击)之间的300延迟。

1、为什么会延迟?

从点击屏幕上的元素到触发元素的 click 事件,移动浏览器会有大约 300 毫秒的等待时间。为什么这么设计呢? 因为它想看看你是不是要进行双击(double tap)操作。
在手持设备的浏览器上(本处主要指代iOS和Android系统上的webkit内核的浏览器和嵌入在应用程序里面的webview),由于两次连续“轻触”是“放大”的操作(即使你两次轻触的是一个链接或一个有click事件监听器的元素),所以在第一次被“轻触”后,浏览器需要先等一段时间,看看有没有所谓的“连续的第二次轻触”。如果有,则进行“放大”操作。没有,才敢放心地认为用户不是要放大,而是需要“click”至此才敢触发click事件,导致“短按(手指接触屏幕到离开屏幕的时间比较短)”的click事件通常约会延迟300ms左右。

2、兼容性

Mobile Safari on iOS 3 and upwards
Chrome on iOS 5 and upwards
Chrome on Android (ICS)
Opera Mobile 11.5 and upwards
Android Browser since Android 2
PlayBook OS 1 and upwards

3、不应用 FastClick 的场景

1)桌面浏览器;
2)如果 viewport meta 标签 中设置了 width=device-width, Android 上的 Chrome 32+ 会禁用 300ms 延时;
3)viewport meta 标签如果设置了 user-scalable=no,Android 上的 Chrome(所有版本)都会禁用 300ms 延迟。这样就无法让用户多点触控缩放网页了
4)IE10 中,可以使用 css 属性 -ms-touch-action: none 禁止元素双击缩放.

4、使用方法

TODO: 修改使用接口
window.addEventListener('load', function() {
FastClick.attach(document.body);
}, false);
Zepto.js:

$(function() {

FastClick.attach(document.body);

});

Copy

var attachFastClick = require('fastclick');

attachFastClick(document.body);

引入插件的JavaScript文件到你的HTML网页中,

<script type='application/javascript' src='/path/to/fastclick.js'></script>

if ('addEventListener' in document) {

document.addEventListener('DOMContentLoaded', function() {

FastClick.attach(document.body);

}, false);

}

如果使用了jQuery插件,

$(function() {

FastClick.attach(document.body);

});

如果你使用的browserify CommonJS的模块系统或另一种风格,其fastclick.attach函数将返回 require(‘fastclick’) 。作为一个结果,使用fastclick这些装载机的最简单的方法如下:

var attachFastClick = require('fastclick');

attachFastClick(document.body);

最新文章

  1. EntityFramework优缺点
  2. 这些年正Android - 身在他乡
  3. WPF路径动画(动态逆向动画)
  4. 黑马程序员_ C语言基础(一)
  5. [转]MySQL与MongoDB的操作对比
  6. 在Tomcat里使用配置连接池连接数据库
  7. 在Quartus II中分配管脚的两种常用方法
  8. Codeforces Round #271 (Div. 2)
  9. 文件搜索查找功能VC++
  10. &lt;poj - 2139&gt; Six Degrees of Cowvin Bacon 最短路径问题 the cow have been making movies
  11. Java之split方法
  12. python第二十二天(面向对象)
  13. spring boot多数据源配置(mysql,redis,mongodb)实战
  14. Spring+Quartz实现定时任务的配置方法(转)
  15. U3D外包公司—北京动点(公司性质)承接U3D、Kinect、VR虚拟现实,增强现实,体感互动,大屏互动等各类外包
  16. windows下安装Jenkins
  17. 说说Java 位运算
  18. CDH上Cloudera Management Service 各个角色迁移至其他节点
  19. 1.1 C++布尔类型(bool)
  20. swift的enum基础

热门文章

  1. 一张图说明HTTPS 握手过程
  2. matlab load
  3. caffe学习3——layers
  4. (android 地图实战开发)2 创建MapActivity,根据设备当前位置,显示地图
  5. 使用POI对excel进行操作生成二维数组
  6. &quot;http://127.0.0.1:4723/wd/hub&quot;的解释
  7. [Luogu4631][APIO2018] Circle selection 选圆圈
  8. 实例-系数可配置的fir滤波器
  9. elixir mix开发入门
  10. fabio 安装试用&amp;&amp;实际使用的几个问题