fastclick使用与解密

fastclick使用与解密fastclick可以消除点击延时提高程序的运行效率。FastClick是一个非常方便的库,在移动浏览器上发生介于轻敲及点击之间的指令时,能够让你摆脱300毫秒的延迟。FastClick可以让你的应用程序更加灵敏迅捷。支持各种移动浏览器,比如Safari、Chrome、Opera等。

大家好,又见面了,我是你们的朋友全栈君。

什么是 fastclick

FastClick is a simple, easy-to-use library for eliminating the 300ms delay between a physical tap and the firing of a click event on mobile browsers. The aim is to make your application feel less laggy and more responsive while avoiding any interference with your current logic.

fastclick,消除点击延时提高程序的运行效率。

为什么要使用 fastclick

According to Google:

…mobile browsers will wait approximately 300ms from the time that you tap the button to fire the click event. The reason for this is that the browser is waiting to see if you are actually performing a double tap.

众所周知,移动端在处理点击事件的时候,会有300毫秒的延迟。恰恰是这300毫秒的延迟,会让人有一种卡顿的体验。

这300毫秒的原因,在于早期浏览器的实现中,浏览器不知道用户触摸后,到底想做什么,所以故意等待300毫秒,再触发click事件。

既然我们已经知道了原因了,怎么解决呢?

1、直接去掉延迟

因为浏览器对 click 事件的处理,有 300ms 的延迟,而 touchstart 几乎是立即执行的,估将所有 click 事件的监听,改为 touchstart 事件的监听,即可消除这 300ms 的延迟。

但这样副作用也很大,移动端的交互体验全靠触摸,touchstart 将会干扰其他交互行为的处理,例如滚动、拖拽等。

2、缓和修复

使用 fastclick.

如何使用 fastclick

既然浏览器有这 300ms 的延迟,那么我们来代替浏览器判断,手动触发 click 事件,这也是 fastClick 的解决方案。

1、引入插件的 JavaScript 文件到你的 HTML 网页中:

<script type="application/javascript" src="/js/fastclick.js"></script>

脚本必须加载到实例化 fastclick 在页面的任何元素之前
实例化 fastclick 最好在 body 元素的前面,这是使用推荐的方法

if('addEventListener' in document) {
  document.addEventListener('DOMContentLoaded', function(){ 
   
    FastClick.attach(document.body);
  },false);
}

2、jQuery 中使用

$(function(){ 
   
  FastClick.attach(document.body);
});

3、如果你使用了 browserify CommonJS 的模块系统或另一种风格。

var attachFastClick = require("fastclick");
attachFastClick(document.body);

什么时候不使用它

fastclick 不附加任何监听器在桌面浏览器上面,所以如果你的项目不是针对的移动浏览器,那么就不要使用这个插件。

Android 设备上的 google 浏览器 (Chrome) 32+ 版本,在 meta 头信息中设置 width=device-width 没有 300 毫秒的延时,所以也无需使用本插件。

<meta name="viewport" content="width=device-width,initial-scale=1">

Chrome 浏览器在安卓设备上的时候,设置 meta 头信息中,user-scalable=no 但是这样就无法让用户多点触控缩放网页了。

对于 IE11+ 你可以设置 touch-action:manipulation; 来禁用通过双击放大某些元素例如:链接和按钮的,对于 IE10 使用 -ms-touch-action:manipulation

—————————(正文完)————————————
一个前端的学习交流群,想进来面基的,可以点击这个logoVue学习交流,或者手动search群号:685486827


写在最后:
约定优于配置——-软件开发的简约原则.

——————————–
(完)————————————–

我的:
个人网站: https://neveryu.github.io/neveryu/
Github: https://github.com/Neveryu
新浪微博: https://weibo.com/Neveryu

微信

更多学习资源请关注我的新浪微博….

width=”100%” height=”500″ class=”share_self” scrolling=”no” src=”http://widget.weibo.com/weiboshow/index.php?language=&width=0&height=550&fansRow=1&ptype=1&speed=0&skin=8&isTitle=1&noborder=1&isWeibo=1&isFans=0&uid=5346488237&verifier=d529ff3a&dpc=1″>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150786.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月19日 下午3:36
下一篇 2022年6月19日 下午3:36


相关推荐

  • Deepseek 正确打开方式:90%的人都不知道的 8 个使用技巧,强烈建议收藏!

    Deepseek 正确打开方式:90%的人都不知道的 8 个使用技巧,强烈建议收藏!

    2026年3月16日
    3
  • LevelDB详解

    LevelDB 一、LevelDB入门LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询较少,而写很多的场景。LevelDB应用了LSM (LogStructuredMerge)策略,lsm_tree对索引变更进行延迟及批量处理,并通过一种类似于归并排序的方

    2022年4月6日
    54
  • 西尔斯罗巴克公司案例分析_巴宝莉滑铁卢

    西尔斯罗巴克公司案例分析_巴宝莉滑铁卢这几天看到网上对WannaCry勒索病毒讨论得沸沸扬扬,不免有些感触。其实该病毒的这次爆发,完全可以类比N年前“熊猫烧香”爆发的情况。也就是国内杀软纷纷歇菜,让本来就没什么技术含量的病毒横行于世。所不同的是,这次在病毒横行的时候,假设有技术爱好者出来质疑国内杀软的查杀水平,那么该杀软厂商的公关人员就会第…

    2022年8月20日
    7
  • pycharm每次打开都更新_pycharm运行配置错误

    pycharm每次打开都更新_pycharm运行配置错误pycharm更新之后显示问题在新版pycharm中等号和其他符号会连在一块,下面是解决方法添加公众号:

    2022年8月28日
    10
  • ubuntu 网络配置

    ubuntu 网络配置RedhatLinux 中设置网卡固定 ip 之前在 xwindow 下的 redhat config network 设置网卡固定 ip 发现不起作用 设置好后就是 ping 不通 就查了些资料 更改 etc sysconfig network scripts ifcfg eth0 第一个网卡为 eth0 配置 dns 的文件为 etc resolv conf 我保留了 dhcp 的配置 配置完后用 ifc

    2026年3月18日
    2
  • jQuery数据类型总结建议收藏

    jQuery除了包含原生JS中的内置数据类型(built-indatatype),还包括一些扩展的数据类型(virtualtypes),如Selectors、Events等。1.StringS

    2021年12月21日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号