头闻号

义乌市少本电子商务商行

综合性公司

首页 > 新闻中心 > 科技常识:移动端300ms延迟的解决方法
科技常识:移动端300ms延迟的解决方法
发布时间:2024-09-22 07:13:07        浏览次数:4        返回列表

今天小编跟大家讲解下有关移动端300ms延迟的解决方法 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关移动端300ms延迟的解决方法 的相关资料,希望小伙伴们看了有所帮助。

一般情况下 如果没有经过特殊处理 移动端浏览器在派发点击事件的时候 通常会出现300ms左右的延迟。也就是说 当我们点击页面的时候移动端浏览器并不是立即作出反应 而是会等上一小会儿才会出现点击的效果。在移动WEB兴起的初期 用户对300ms的延迟感觉不明显。但是 随着用户对交互体验的要求越来越高 现今 移动端300ms的点击延迟逐渐变得明显而无法忍受。那么 移动端300ms的点击延迟是怎么来的呢

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

双击缩放 顾名思义 即用手指在屏幕上快速点击两次 iOS 自带的 Safari 浏览器会将网页缩放至原始比例。 那么这和 300 毫秒延迟有什么联系呢 假定这么一个场景。用户在 iOS Safari 里边点击了一个链接。由于用户可以进行双击缩放或者双击滚动的操作 当用户一次点击屏幕之后 浏览器并不能立刻判断用户是确实要打开这个链接 还是想要进行双击操作。因此 iOS Safari 就等待 300 毫秒 以判断用户是否再次点击了屏幕。 鉴于iPhone的成功 其他移动浏览器都复制了 iPhone Safari 浏览器的多数约定 包括双击缩放 几乎现在所有的移动端浏览器都有这个功能。之前人们刚刚接触移动端的页面 在欣喜的时候往往不会care这个300ms的延时问题 可是如今touch端界面如雨后春笋 用户对体验的要求也更高 这300ms带来的卡顿慢慢变得让人难以接受。

解决如何解决移动端300ms延迟:

方法一:禁止缩放(在meta标签中设置) Chorm和Firfox支持,Safari比较麻烦他还有双击缩放还有双击滚动操作

<meta name="viewport"content="user-scalable=no,initial-scale=1,maximun-scale=1"/>

页面不可缩放 这样双击缩放功能就没有意义了 此时浏览器可以禁用默认的双击缩放行为并且去掉300ms的点击延迟。

缺点:必须完全禁用缩放来达到目的 但是通常情况下 我们还是希望能通过双指来进行缩放的

方法二:更改默认的视口宽度(在meta标签中设置) Chorm和Firfox支持 Safari比较麻烦他还有双击缩放还有双击滚动操作

<meta name="viewport"content="width=device-width"/>

如果能识别出一个网站是响应式的网站 那么移动端浏览器就可以自动禁止双击缩放行为并去掉300ms的点击延迟。

设置上述的meta标签 那么浏览器就可以认为网站已经对移动端做过适配优化 就无需双击操作。

好处:没有完全禁用缩放 而是禁用浏览器默认的双击缩放行为 但用户仍然可以通过双指缩放操作来缩放页面。

方法三:css touch-action IE支持

touch-action:指定相应的元素上能够触发的用户代理(浏览器)的默认行为。

将该属性值设置为touch-action:none 那么表示在该元素上操作不会触发用户代理的任何默认行为。就无需进行300ms的延迟判断了。

方法四:FastClick 专门为解决移动端浏览器300ms点击延迟问题发开的一个轻量级的库。

原理:在检测到touchend事件的时候 会通过DOM自定义事件立即发出模拟一个click事件 并把300ms之后发出的click事件阻止掉。

来源:爱蒂网