关于移动端的click时间有延迟的问题(300ms延迟)

来源:互联网 发布:vmware tools mac 10.9 编辑:程序博客网 时间:2024/04/30 12:19


首先这个问题百度google一大堆,这里不详细阐述,只提供一种解决方案。


还是先说一下问题的由来:

问题由来

这要追溯至 2007 年初。苹果公司在发布首款 iPhone 前夕,遇到一个问题:当时的网站都是为大屏幕设备所设计的。于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题。

这当中最出名的,当属双击缩放(double tap to zoom),这也是会有上述 300 毫秒延迟的主要原因。双击缩放,顾名思义,即用手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会将网页缩放至原始比例。

那么这和 300 毫秒延迟有什么联系呢?

假定这么一个场景。用户在 iOS Safari 里边点击了一个链接。由于用户可以进行双击缩放或者双击滚动的操作,当用户一次点击屏幕之后,浏览器并不能立刻判断用户是确实要打开这个链接,还是想要进行双击操作。因此,iOS Safari 就等待 300 毫秒,以判断用户是否再次点击了屏幕。

鉴于iPhone的成功,其他移动浏览器都复制了 iPhone Safari 浏览器的多数约定,包括双击缩放,几乎现在所有的移动端浏览器都有这个功能。之前人们刚刚接触移动端的页面,在欣喜的时候往往不会care这个300ms的延时问题,可是如今touch端界面如雨后春笋,用户对体验的要求也更高,这300ms带来的卡顿慢慢变得让人难以接受。 



解决方案:

这里提供一个插件  :tap.js

https://github.com/pukhalski/tap


关于这个插件的用法也很简单:

首先是引入:

<script src="bower_components/tap/dist/tap.min.js"></script>

使用:

document.getElementById('any-element').addEventListener('tap', function (e) {    // All the magic happens here});

如果配合jquery:

$('#any-element').on('tap', function (e) {    // All the magic happens here});



0 0
原创粉丝点击