关于fastclick.js
fastclick.js解决了什么问题?
自己接触WebApp开发的前期, 总感觉WebApp上的按键操作不如NativeApp的灵敏, 好像有那么一小点延迟.
后来才知道, 这是移动端浏览器特意设计的延迟 -- 在移动端, "用户的点击"和"点击生效"之间会有300ms的延迟.
这一设计是为了支持双击操作(比如双击放大页面). 如果用户在300ms内点击了第二下, 浏览器则会认为用户想要双击而不是单击.
移动端浏览器是这么处理这300ms延迟的.
- 用户点击屏幕, 触发
touchstart事件. - 用户停止点击, 触发
touchend事件. - 浏览器等待300ms, 看用户是否会点击第二次.
- 如果没有第二次点击, 则触发
click事件.
fastclick.js做的事情就是消除这300ms的延迟, 让你的WebApp体验更加像是NativeApp.
如何使用fastclick.js?
非常简单, 照着Fastclick的README做就好了.
除了直接通过<script>标签引入, 它还支持AMD, CommonJS模块系统.
如果你jQuery的话, 引入fastclick后, 只需要下面这样就OK了.
$(function() {
FastClick.attach(document.body);
});
我遇到的一个fastclick的坑.
其实这才是本文的主要目的. 今天碰到一个奇怪的问题: 我发现在桌面版Chrome上, click可以正常触发focus事件; 但是打开Mobile Device Mode之后, click后就无法再触发focus事件了!
最后把问题定位到了fastclick, 如果不用它就 不会出现这个问题.
另外, 我还发现, 在我的iPhone上, 只有时间大于100ms, 小于1s的click才可以触发focus, 时间更短或更长的click则都不会.
具体为什么会有这个问题, 其实我还不清楚=,.=. 但是我做了不少尝试.
首先是needsclick, 这个README里面有写. 后来我又在源代码里找到了needsfocus. 这两个类可以禁用fastclick的hack, 但是有个缺陷:
div.needsclick
div.inner
这样的结构中, 用户点击.needsclick可以正常触发.needsclick的focus事件, 但是如果点到了.inner就无法触发.needsclick的focus事件了.
最后我还是选用了简单粗暴的方法: 给元素绑上click事件, 在click中触发focus.
参考
关于fastclick.js的更多相关文章
- fastclick.js介绍
原文地址:http://www.uedsc.com/fastclick.html 用途:去掉移动端click事件的300ms的延迟. 延迟为什么存在 …在移动浏览器中,当你点击按钮的单击事件时,将 ...
- [转] iOS11.3 fastclick.js相关bug
最近遇到奇异的bug,在ios 11.3移动端页面 input输入框第一次触摸可以弹起键盘,后续再触摸需要很难弹起键盘,或者需要在输入框停一会才能弹起键盘. bug复现条件: 一.ios 11.3中a ...
- 移动端点击事件300ms延迟问题解决方案——fastclick.js
移动端点击事件300ms延迟的问题由来已久,如下截图 下面截图来自原文:https://www.jianshu.com/p/6e2b68a93c88 网上关于300ms延迟问题的解决方法,大致分为 3 ...
- fastclick.js插件使用简单说明
为什么存在延迟? 从点击屏幕上的元素到触发元素的 click 事件,移动浏览器会有大约 300 毫秒的等待时间.为什么这么设计呢? 因为它想看看你是不是要进行双击(double tap)操作. ...
- fastclick.js解决移动端(ipad)点击事件反应慢问题
参考http://blog.csdn.net/xjun0812/article/details/64919063 http://www.jianshu.com/p/16d3e4f9b2a9 问题的发现 ...
- IOS中div contenteditable=true无法输入 fastclick.js在点击一个可输入的div时,ios无法正常唤起输入法键盘
原文地址: https://blog.csdn.net/u010377383/article/details/79838562 前言 为了提升移动端click的响应速度,使用了fastclick.js ...
- fastclick.js源码解读分析
阅读优秀的js插件和库源码,可以加深我们对web开发的理解和提高js能力,本人能力有限,只能粗略读懂一些小型插件,这里带来对fastclick源码的解读,望各位大神不吝指教~! fastclick诞生 ...
- JS 插件 fastclick.js 解决手机端click点击延迟
FastClick 是一个简单,易于使用的JS库用于消除在移动浏览器上触发click事件与一个物理Tap(敲击)之间的300延迟. 对于非移动浏览器不启作用,禁用缩放标签. <meta name ...
- html 手机端click 事件延迟问题(fastclick.js使用方法)
下载地址: fastclick.js 为什么存在延迟? 从点击屏幕上的元素到触发元素的 click 事件,移动浏览器会有大约 300 毫秒的等待时间.为什么这么设计呢? 因为它想看看你是不是要进行双击 ...
随机推荐
- HW-IP合法性_Java
描述 现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉 ...
- 正则化—Java中Split函数的用法技巧_(转载修改)
原文地址:http://www.cnblogs.com/liubiqu/archive/2008/08/14/1267867.html java.lang.string.split split 方法 ...
- Oracle学习第一天---安装和基础入门
国庆七天假,决定静下心来入门Oracle数据库. 环境:Ocacle 11g 软件安装包和安装图解,大家可以在我的百度网盘上下载:链接:http://pan.baidu.com/s/1ntjDEnZ ...
- 知乎 zhihu
知乎上关于美食的精彩问答有哪些? http://www.zhihu.com/question/22744751/answer/22473212 知乎上关于乐队的精彩问答有哪些? http://www. ...
- YYKit之YYModel
原文:http://www.cnblogs.com/lujianwenance/p/5706548.html 本文主要是对YYModel文件结构的简单分析,能帮助你更快的熟悉和学习YYModel ...
- iOS RunTime的简单使用
1.根据指定规则根据runtime进行页面选择跳转 背景:要根据后台返回的数据 进行选择要跳转到哪一个ViewController // 这个规则肯定事先跟服务端沟通好,跳转对应的界面需要对应的参数 ...
- spring.net 和 mybatis.net
demo是整合现有的spring.net 和 mybatis.net 完成的控制台程序,需要注意的地方:关于Config文件夹中的config文件的属性设定:同时保证Providers.config默 ...
- C++ 书籍
C++ 书籍 一.<深度探索C++对象模型/Inside the C++ Object Model> 二.
- Angle
1 What is Angle. The goal of ANGLE is to allow Windows users to seamlessly run WebGL and other OpenG ...
- java 中hashcode和equals 总结
一.概述 在Java中hashCode的实现总是伴随着equals,他们是紧密配合的,你要是自己设计了其中一个,就要设计另外一个.当然在多数情况下,这两个方法是不用我们考虑的,直 ...