博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
苹果浏览器移动端click事件延迟300ms的原因以及解决办法
阅读量:5277 次
发布时间:2019-06-14

本文共 720 字,大约阅读时间需要 2 分钟。

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

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

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

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

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

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

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

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

 

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

你可能感兴趣的文章
Dell最近的几款显示器看上去还不错的样子
查看>>
c++中的new、operator new、placement new
查看>>
List<>的操作
查看>>
SharePoint 2010 产品六大功能模块
查看>>
jquery easyUi简单介绍
查看>>
Java 并发——多线程基础
查看>>
理解领域模型
查看>>
饱和操作和模操作
查看>>
图论500题
查看>>
一霎清明雨,实现考勤管理。
查看>>
iOS 因为reason: 'Pushing the same view controller instance more than once is not supported而奔溃(下)...
查看>>
本周个人总结(软件的初步开发)
查看>>
理解Vue 2.5的Diff算法
查看>>
Virtual DOM的简单实现
查看>>
UI(UGUI)框架(一)---------概述与保存/读取面板类型与路径
查看>>
QTP自动化测试框架的基础知识
查看>>
QTP之对测试用例的自动化过程的分解
查看>>
java运行可以执行文件
查看>>
数学之美番外篇:平凡而又神奇的贝叶斯方法
查看>>
语义分割
查看>>