曾经的移动端300ms点击延迟问题是什么?

289 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第19天

曾经的移动端300ms延迟问题是什么?

发现问题

在以前,移动端还未完全兴起时,我们的网页都是为PC端而设计的,基本没有考虑移动端的适配,其中一个问题就是IOS端的著名问题——双击缩放。

我们在IOS移动端打开浏览器网页,当需要放大页面时,常会双击放大,这里的实现原理就是——浏览器做了判断,观察我们两次点击是不是快速完成的,如果用户第一次点击屏幕后在300ms内又点击了一次,浏览器就判断用户进行了双击动作,但是当你只需要单击时,浏览器依然会等待300ms看你是否进行第二次点击,若超过300ms,才会认为我们做了单击动作,做出响应,在移动WEB兴起的初期,用户对300ms的延迟感觉不明显。但是,随着用户对交互体验的要求越来越高,现今,移动端300ms的点击延迟逐渐变得明显而无法忍受。

解决问题

目前最便捷有效的解决方案是使用 FastClick.js 库,这是专门为解决移动端浏览器300 ms点击延迟问题所开发的一个轻量级的库,FastClick的实现原理是在检测到touchend事件的时候,通过DOM自定义事件立即出发模拟一个click事件,并把浏览器在300ms之后的click事件阻止掉。

安装使用方式

直接npm安装:

npm install fastclick -S

类似Common JS的模块系统方式

var attachFastClick = require("fastclick");//返回FastClick.attch函数
attachFastClick(document.body);

调用attach方法后就成功地引入了该库

补充:现在浏览器厂商已经解决了这个问题,除非要向低版本IOS做兼容,正常开发已经用不到他啦!