Javascript: 关于移动端与pc的点击事件的探讨
2017-04-12 17:15
429 查看
问题1:移动端click事件会延迟响应
Solution: 移动端使用zeptojs中的tap事件来替换click
问题2: tap事件有点透的问题存在
点透:点击上一层按钮的事件,会触发下一层的点击事件或者链接
Solution: 因为tap事件的实现原理就是通过touch事件。因此,我们可以通过touch事件的结合来模拟点击事件。
上述方式类似于mousedown + mousemove + mouseup的结合使用。
当然可以直接使用touchend,但是touchend 的问题在与如果从其他区域滑动到绑定事件的元素上,然后离开,也会触发touchend,因此这里存在用户体验很奇怪的问题,所以要根据需求结合使用。
问题3: 有的时候,一个页面需要在移动端和pc端同时使用,但是不能同时绑定click与touchend,因为这样会在移动端触发两次。
Solution: 通过判断是否存在于移动端,分别绑定相应的事件
Solution: 移动端使用zeptojs中的tap事件来替换click
问题2: tap事件有点透的问题存在
点透:点击上一层按钮的事件,会触发下一层的点击事件或者链接
Solution: 因为tap事件的实现原理就是通过touch事件。因此,我们可以通过touch事件的结合来模拟点击事件。
Element.on('touchstart', function() {}) .on('touchmove', function() {}) .on('touchend', function() {})
上述方式类似于mousedown + mousemove + mouseup的结合使用。
当然可以直接使用touchend,但是touchend 的问题在与如果从其他区域滑动到绑定事件的元素上,然后离开,也会触发touchend,因此这里存在用户体验很奇怪的问题,所以要根据需求结合使用。
问题3: 有的时候,一个页面需要在移动端和pc端同时使用,但是不能同时绑定click与touchend,因为这样会在移动端触发两次。
Solution: 通过判断是否存在于移动端,分别绑定相应的事件
// 点击之后执行什么内容 function foo(event){}; // 判断浏览器是否是移动端 function isMobile() { return navigator.userAgent.match(/(iphone|ipad|ipod|ios|android|mobile|blackberry|iemobile|mqqbrowser|juc|fennec|wosbrowser|browserng|Webos|symbian|windows phone)/i); } //封装一个tap事件 function tap(ele, callback) { var tag = 0; if (isMobile()) { $(ele).on('tuochstart', function(event) { event.preventDefault(); tag = 0; // 如果移动了,则不算tap,这一点和click处理有一些区别 }).on('touchmove', function() { tag = 0; }).on('touchend', function(event) { if (tag == 0) { callback(event); } }) } else { $(ele).on('click', function(event) { callback(event); }) } }
相关文章推荐
- 淘宝一面 关于JavaScript中的事件代理(例子:ul中无数的li上添加点击事件)
- 关于JavaScript中的事件代理(例子:ul中无数的li上添加点击事件)
- pc端点击事件在移动端失效(zepto)
- pc端点击事件和移动端点击事件区别
- jquery关于移动端的点击事件解析
- ios移动端关于事件绑定区域点击闪屏的解决
- 淘宝一面 关于JavaScript中的事件代理(例子:ul中无数的li上添加点击事件)
- 关于JavaScript 的事件[上]
- 关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
- 关于javascript中的事件学习及总结
- 关于JavaScript 的事件综合分析第1/2页
- Javascript 模拟点击事件(点击链接与html点击) 兼容IE/Firefox
- 关于javascript DOM事件模型的两件事
- 关于鼠标点击事件
- 关于JavaScript 的事件[下]
- 关于javascript DOM事件模型的两件事
- 关于JavaScript键盘事件
- 关于 JavaScript弹出窗体 点击按钮返回选择数据 的实现
- 关于点击事件
- JavaScript之响应按钮点击事件