移动端开发踩坑日记——安卓4.4.2不触发touchend事件
来源:互联网 发布:mac文件夹预览图片 编辑:程序博客网 时间:2024/05/29 14:32
背景:最近在公司开发一个景区人流量卡片
要求:卡片类似轮播图,可以左右滑动查看不同的数据
问题:在低端安卓机左右滑动无响应(安卓4.4.2)
解决过程:
1.确定问题所在:我首先考虑到的但是性能问题,由于在touchmove事件中的处里函数非常浪费 性能,所以我再touchmove事件的处里函数里面进行了节流,问题还是没有解决,不但没有解决反而其他的高端机型也变得非常卡顿。然后我又考虑是不支持touch事件,而后我再每一个事件的处里函数中添加alert();语句,测试结果touchend事件没有触发。
2.解决问题:网上查资料可知是浏览器的默认行为阻止了touchend事件的触发。但是阻止默认行为后又有新的问题,就上下滚动也失效了,进一步解决,请看注释部分。
day.on("touchmove",function(event){ var touch = event.touches[0]; endPosition = { x: touch.clientX } deltaX = endPosition.x - startPosition.x; var distance = deltaX+(-data.indexDay*(dayBoxWidth+15)); animate(distance); if (Math.abs(deltaX) > 5) { // 滚动距离大于5 event.preventDefault(); } });
问题的深入:
1.touch事件?
touchstart事件:当手指触摸屏幕的时候触发, 及时 有一个手指放在屏幕上也会触发;touchmove事件:当手指在屏幕上滑动的时候触发,是一个持续的过程,在触发事件的过程中 可以调用preventDefult()方法阻止滚动;touchend事件: 当手指从屏幕上移开的时候触发;touchcancel事件:当系统停止跟踪触摸的时候触发, 比如 来电话 或者短信 或者其他的提醒的时候 会打断touchmove事件;单击时的触发顺序:touchstart -> touchmove -> touchend;滑动时的触发顺序:touchstart -> touchmove -> touchmove -> ....... ->touchmove ->touchend;
2.安卓4.0的touch事件的触发过程
单击时的触发顺序:touchstart -> touchmove -> touchend;滑动时的触发顺序:touchstart -> touchmove -> touchcancel;
3.为什么要阻止浏览器默认行为
考虑性能问题,安卓4.0的浏览器只允许触发一次用户自定的touchmove的事件处理函数,如果多次触发就会触发浏览器的默认行为,直接触发touchcancel事件。所以在touchmove的处里函数中阻止默认行为就能解决这个问题。
阅读全文
0 1
- 移动端开发踩坑日记——安卓4.4.2不触发touchend事件
- 解决移动端页面滚动后不触发touchend事件
- 解决移动端页面滚动后不触发touchend事件
- 移动端touchmove事件边界touchend不触发
- 让移动端页面滚动后不触发touchend事件的方法
- 移动web相关touch事件触发(touchstart/touchmove/touchend)
- 解决滑动时不触发touchend事件的bug
- 如何让touchmove之后不触发touchend的事件
- 安卓开发——问题:ListView的item长按事件触发后接着触发点击事件
- [Phonegap+Sencha Touch] 移动开发16 安卓webview中,input输入框不触发backspace回退键事件的解决办法(带来其他bug,作废)
- WEB移动端的click ,tap ,touchend事件的对比
- 移动端touchstart、touchend触摸事件的简单使用
- 安卓开发日记2——思念计数器
- 安卓开发日记2——eclipse配置
- 移动端触发onmousemoveout事件
- 关于touch事件的使用 (touchStart touchMove touchEnd(不触发 android 4.0以上)) 滑动的使用
- 移动端开发--日记
- 【 H5踩坑 】Dom变更引起的 touchend 不触发
- Android消息推送之自启动
- MFC对话框可拖动化
- c语言中的#ifndef、#def、#endif等宏是什么意思
- android直播学习:软编码+硬编码+rtmp推流视音频
- Noip2016 天天爱跑步【LCA】【差分】
- 移动端开发踩坑日记——安卓4.4.2不触发touchend事件
- 全面升级Android面试之Content Provider面试题集
- 使用dialog导致内存泄露的问题
- OSI参考模型和TCP/IP体系结构
- SSM---分页
- 一个前端刚入门的小白的独白
- windows10 home edition 連AD共享盤的方法
- Android应用中嵌入Unity3D视图
- JAX-WS生成方式