处理移动端click事件300ms延迟的好方法—FastClick

摘要:
Android设备上的google浏览器32+版本,在meta头信息中设置width=device-width没有300毫秒的延时,所以也无需使用本插件。脚本必须加载到实例化fastclick在页面的任何元素之前。作为一个结果,使用fastclick这些装载机的最简单的方法如下:varattachFastClick=require;attachFastClick;

下载地址:https://github.com/ftlabs/fastclick

1、click事件为什么有延迟?

“...mobile browsers will wait approximately 300ms from the time that you tap the button to fire the click event. The reason for this is that the browser is waiting to see if you are actually performing a double tap.”

大概意思就是:从点击屏幕上的元素到触发元素的click事件,移动浏览器会有大约 300 毫秒的等待时间。这是因为浏览器想看看你是不是要进行双击(double tap)操作。

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不附加任何监听器在桌面浏览器上面,所以如果你的项目不是针对的移动浏览器,那么就不要使用这个插件。

Android设备上的 google浏览器 (Chrome) 32+ 版本,在meta头信息中设置width=device-width没有300毫秒的延时,所以也无需使用本插件。

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

Chrome浏览器在安卓设备上的时候,设置meta头信息中user-scalable=no但是这样就无法让用户多点触控缩放网页了。

对于IE11 + 你可以设置touch-action: manipulation;来禁用通过双击放大某些元素例如:链接和按钮的,对于IE10使用-ms-touch-action: manipulation

4、使用方法

引入插件的javascript文件到你的HTML网页中,像这样:

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

注意:type属性在HTML5网页中可以省略不写。

脚本必须加载到实例化fastclick在页面的任何元素之前。

实例化fastclick 最好在body元素的前面,这是使用推荐的方法:

if ('addEventListener' indocument) {
    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);

免责声明:文章转载自《处理移动端click事件300ms延迟的好方法—FastClick》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue配置请求转发解决跨域问题UTF-8 的BOM带来的麻烦下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

移动端网页点击延迟及事件穿透

一、click事件的300毫秒延迟是怎么产生的? 苹果在2007年发布iphone前夕遇到一个问题,当时相应的网页都是针对大屏编写的,如果直接在iphone上浏览则会出现横向的滚动条,于是他们制定了一些规则来缩放网页,通过双击可以还原网页大小,这种方法后来被其它移动浏览器厂商所采用。300毫秒延迟产生的原因就在于当用户一次点击屏幕之后,浏览器并不能立刻判断...

移动端开发经常遇见的问题以及解决方案

1.移动端左右滑动右侧有留白出现这种问题的话查看一下自己的css中有没有用到position:relative或者position:absolute,我做页面的时候经常遇到这个问题,百分之一百是这个原因。解决方案:只要设置html,body的width为100%,overflow:hidden就可以了。 2.iOS点击事件无效果的几个方案1)为css添加c...

移动端常用开发插件和框架

1. 移动端常用开发插件 1.1. 什么是插件 移动端要求的是快速开发,所以我们经常会借助于一些插件来帮我完成操作,那么什么是插件呢? JS 插件是 js 文件,它遵循一定规范编写,方便程序展示效果,拥有特定功能且方便调用。如轮播图和瀑布流插件。 特点:它一般是为了解决某个问题而专门存在,其功能单一,并且比较小。 我们以前写的animate.js 也算一个...