最近有个触屏的移动设备的前端项目,使用JQ的click事件在设备上跑有延迟,效果不好。后来想用zepto的tap事件但项目已经用JQ写出来了,还得处理JQ和zepto的冲突问题,并且就为了一个click穿透要添加那么大的文件感觉不值得。最后改用fastclick插件,比zepto少了十多kb。顺利解决问题!!
click延迟原因:这300毫秒的原因,在于早期浏览器的实现中,浏览器不知道用户触摸后,到底想做什么,所以故意等待300毫秒,再触发click事件。
fastClick解决了zepto的点击穿透问题。
下面是使用步骤:
1、下载fastclick:http://download.csdn.net/detail/enya00/8252445
2、引入插件
①在HTML页面中添加<script type='application/javascript' src='/path/to/fastclick.js'></script>必须在页面所有Element之前加载脚本文件先实例化fastclick
②在JS中添加fastclick的身体,推荐以下做法:
原生JS:
- if ('addEventListener' in document) {
- document.addEventListener('DOMContentLoaded', function() {
- FastClick.attach(document.body);
- }, false);
- }
如果你使用了JQuery,那么JS引入就可以改用下面的写法:
- $(function() {
- FastClick.attach(document.body);
- });
后面的JQuery的click事件这样写:
$("#keyboard_container").click(function(e){。。。。。}