这要追溯至 2007 年初。苹果公司在发布首款 iPhone 前夕,遇到一个问题 —— 当时的网站都是为大屏幕设备所设计的。于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题。这当中最出名的,当属双击缩放(double tap to zoom)。这也是会有上述 300 毫秒延迟的主要原因。

当用户一次点击屏幕之后,浏览器并不能立刻判断用户是要进行双击缩放,还是想要进行单击操作。因此,iOS Safari 就等待 300 毫秒,以判断用户是否再次点击了屏幕。

于是,300 毫秒延迟就这么诞生了。

FastClick 是 FT Labs 专门为解决移动端浏览器 300 毫秒点击延迟问题所开发的一个轻量级的库。简而言之,FastClick 在检测到 touchend 事件的时候,会通过 DOM 自定义事件立即触发一个模拟click 事件的click事件(自定义事件),并把浏览器在 300 毫秒之后真正触发的 click 事件阻止掉。

FastClick 非常实际地解决 300 毫秒点击延迟的问题。唯一的缺点可能也就是该脚本的文件尺寸 (尽管它不大)。如果你非常在意这点文件大小,可以尝试一下 Filament Group 的 Tappy!,或者 tap.js。两者都相当轻量,能够通过监听 tap 而非 click 事件来绕过 300 毫秒延迟。

当然,zepto库函数中,也有一个touch模块,此模块也包含tap事件,可以通过绑定tap来取代click事件。

但是zepto的tap事件会有点透问题。如何解决,请看下篇分解。

接下来,我们来详细了解一个问题:FastClick解决延迟点击的源码解析。

<script type="text/javascript" src="js/fastclick.js" ></script>
<script>window.addEventListener( "load", function() {FastClick.attach( document.body );}, false );
</script>

转载于:https://www.cnblogs.com/lhj-blog/p/7864839.html

苹果浏览器移动端click事件延迟300ms的原因以及解决办法相关推荐

  1. fastclick 解决移动端click事件延迟300ms和点击穿透问题

    一.移动端click点击事件300ms延迟介绍 在正常情况下,如果不进行特殊处理,移动端在触发点击事件时,会有300ms的延迟.换句话说,当我们在点击移动端页面后不会立即做出反应,而是会等待300ms ...

  2. click事件延迟300ms,处理方法-----FastClick

    下载地址:https://github.com/ftlabs/fastclick http://amazeui.org/1.x/javascript/fastclick/ 从点击屏幕上的元素到触发元素 ...

  3. fastclick 解决移动端click事件300ms延迟

    移动端click 事件延迟300ms 一般情况下,如果没有经过特殊处理,移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟.也就是说,当我们点击页面的时候移动端浏览器并不是立即作出反应, ...

  4. MySQL备库复制延迟的原因及解决办法

    背景 今天有同事问我主从复制延迟会影响高可用切换的 RTO 怎么办,这个不需要做实验,我可以直接回答,所以有了以下赶鸭子的文章,都是一线运维经验之谈,建议四连:点赞.收藏.转发.在看. 复制延迟的原因 ...

  5. fastclick:处理移动端click事件300毫秒延迟

    fastclick:处理移动端click事件300毫秒延迟 1.兼容性 iOS 3及更高版本的移动Safari iOS 5及更高版本的Chrome Android上的Chrome(ICS) Opera ...

  6. 移动端的click事件延迟触发的原理是什么?如何解决这个问题?

    移动端的click事件延迟触发的原理是什么?如何解决这个问题? 原理 :移动端屏幕双击会缩放页面 300ms延迟 会出现点透现象 在列表页面上创建一个弹出层,弹出层有个关闭的按钮,你点了这个按钮关闭弹 ...

  7. 设计方案--移动端延迟300ms的原因以及解决方案

    一.前言 移动端浏览器提供一个特殊的功能:双击(double tap)缩放.   二.移动端延迟300ms的原因 为什么要用触摸事件?触摸事件是移动端浏览器特有的html5事件. 因为移动端的clic ...

  8. 滑动翻页效果实现和移动端click事件问题

    前述 本文很短~ 主要是为了总结和讲述移动端click和js事件机制导致的一个问题. (:咳咳,其实几句话就能写完的还要水一篇文章,不愧是我- 正文 最近做了一个小活动,里面要用到一个效果:滑动翻页. ...

  9. 手机端如何阻止苹果浏览器输入框默认放大事件

    今天遇到了苹果手机浏览器输入的时候,整个网页会放大,并且不会缩小,暂时还没有找到解决的办法,在继续找找 window.onload = function () { document.addEventL ...

最新文章

  1. 20150411--Dede二次开发-01
  2. R语言ggplot2可视化将X轴置于ggplot2图表顶部实战
  3. laravel ajax评论,javascript-Laravel 5.8尝试进行AJAX调用以删除评...
  4. 中国半导体硅片行业未来发展趋势与销售规模预测报告2022版
  5. Oracle11g新特性注意事项
  6. sonarqube下载地址
  7. Docker镜像分层和临时容器
  8. matlab计算微分ppt,matlab-ch013(数值计算-微积分)20090923.ppt
  9. Java的8大排序的基本思想及实例解读
  10. Web API应用架构在Winform混合框架中的应用(5)--系统级别字典和公司级别字典并存的处理方式...
  11. MATLAB遍历文件夹
  12. elipse手机设备显示Target unknown解决方法
  13. Building package xxx:xxx-windows failed with: BUILD_FAILED
  14. 不用校园网如何下载论文文献|DOI号|文献免费下载
  15. 日本IT公司工作体验
  16. 基于JSoup的网络爬虫爬取小说内容
  17. 百度推广怎么调整计算机优先,百度推广oCPC的优化技巧是什么?oCPC常见问题汇总...
  18. 【Python】strip() 方法
  19. 【测试】用Chrome在电脑上模拟微信浏览器
  20. 2020-09-15 JAVA面试题整理

热门文章

  1. Android Apk增量更新
  2. java控制一次传10条数据_java 定时同步数据的任务优化
  3. JZOJ 5195. 【NOIP2017提高组模拟7.3】A
  4. c语言形考作业1答案,c语言程序设计形考任务二答案.doc
  5. C#Socket开发TCP详解(二)
  6. sql输出带颜色的字段_表输出步骤详解
  7. Exception in thread main java.lang.Error: Unresolved compilation problems 解决方案
  8. IBM开发单原子存储技术 iPod能存上3万部电影?
  9. BZOJ-1923-外星千足虫-SDOI2010
  10. poj3076(16*16数独)