您的位置:首页 > 移动开发

移动端WEB开发,click,touch,tap事件

2018-02-27 09:54 288 查看
一、click 和 tap 比较两者都会在点击时触发,但是在手机WEB端,click会有 200~300 ms,所以请用tap代替click作为点击事件。singleTap和doubleTap 分别代表单次点击和双次点击。二、关于tap的点透处理在使用zepto框架的tap来移动设备浏览器内的点击事件,来规避click事件的延迟响应时,有可能出现点透的情况,即点击会触发非当前层的点击事件。处理方式:(1)、github上有一个叫做fastclick的库,它也能规避移动设备上click事件的延迟响应,https://github.com/ftlabs/fastclick
将它用script标签引入页面(该库支持AMD,于是你也可以按照AMD规范,用诸如require.js的模块加载器引入),并且在dom ready时初始化在body上,如:
然后给需要“无延迟点击”的元素绑定click事件(注意不再是绑定zepto的tap事件)即可。
当然,你也可以不在body上初始化它,而在某个dom上初始化,这样,只有这个dom和它的子元素才能享受“无延迟”的点击实践开发中发现,当元素绑定fastclick后,click响应速度比tap还要快一点点。哈哈(2)、为元素绑定touchend事件,并在内部加上e.preventDefault();<
c2d1
div class="line number5 index4 alt2" style="margin:0px;padding:0px;color:rgb(0,0,0);font-family:'Microsoft YaHei', '微软雅黑';font-size:14px;line-height:25.2px;text-align:left;background-color:rgb(255,255,255);">
})
 这4个事件的触发顺序为:touchstart -> touchmove
-> …… -> touchmove ->touchend但是单凭监听上面的单个事件,不足以满足我们去完成监听在触屏手机常见的一些手势操作,如双击、长按、左右滑动、缩放等手势操作。需要组合监听这些事件去封装对这类手势动作。其实市面上很多框架都针对手机浏览器封装了这些手势,例如jqmobile、zepto、jqtouch,不过悲剧发生了,对于某些android系统(我自己测试到的在android 4.0.x),touchmove和touchend事件不能被很好的触发,举例子说明下:比如手指在屏幕由上向下拖动页面时,理论上是会触发 一个 touchstart ,很多次 touchmove
,和最终的 touchend ,可是在android 4.0上,touchmove只被触发一次,触发时间和touchstart
差不多,而touchend直接没有被触发。这是一个非常严重的bug,在google Issue已有不少人提出  http://code.google.com/p/android/issues/detail?id=19827暂时我只发现在android 4.0会有这个bug,据说 ios 3.x的版本也会有。而显然jqmobile、zepto等都没有意识到这个bug监听实现带来的严重影响,所以在直接使用这些框架的event时,或多或少会出现兼容性问题!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: