解决JavaScript拖动时触发点击事件的BUG
来源:互联网 发布:混沌与秩序2在线数据库 编辑:程序博客网 时间:2024/06/05 06:34
bug的原因:
一个完整的click事件是包含
mousedown,mouseup
两个事件的,而拖拽一个元素时,包含下面三个事件:
mousedown,mousemove,mouseup,
所以我们在拖拽一个元素结束后,如果此元素上面绑定了点击事件, 就会同时触发元素的点击事件,用户体验度不好。
解决思路
仔细比较拖拽与点击事件,发现拖拽事件多了一个mousemove,我们可以从这个mousemove入手,点击事件 时mousedown与mouseup触发时鼠标没有移动,而拖拽时鼠标移动了一定的距离,具体体现在px上。
解决办法
可以设定一个clickFlag变量,通过clickFlag来确定mousedown与mouseup到底是触发了点击事件还是 拖动事件:
mousedown时记录下鼠标的位置x1,y1,mouseup时记录下鼠标的位置x2,y2,
判断两次位置 是否一样或是相差小于一个定值(设为7px):
d = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
当d=0或是小于7时,即可认定用户没有拖拽。此时clickFlag为true,可以触发点击事件。
阅读全文
0 0
- 解决JavaScript拖动时触发点击事件的BUG
- javascript 点击触发事件
- 解决滑动时不触发touchend事件的bug
- android点击返回时触发的事件
- HTML5:百度地图手机端单触点单击和长按事件,解决部分手机点地图击失效,多触点、拖动依然触发长按的bug
- jquery+javascript触发a标签的点击事件
- javascript的奇怪的问题,鼠标点击偶数次触发事件,单数次不触发事件
- 切换触发点击的事件
- JavaScript js阻止连续点击事件触发
- 解决weex点击事件触发两次
- 百度地图手机端单触点单击和长按事件,解决部分手机(小米手机)地图单击事件失效,多触点、拖动依然触发长按的bug
- 解决Android按住空白区域,导致点击其他按钮无法触发点击事件的问题
- onpopstate浏览器点击回退按钮时触发的事件
- 点击label时click事件被触发两次的坑
- onpopstate浏览器点击回退按钮时触发的事件
- onpopstate浏览器点击回退按钮时触发的事件
- 多个div对应同一个点击事件时,确定触发点击事件的div的方法
- iscroll滑动区域内的div onclick事件单击一次触发了两次bug解决
- RUP(Rational 统一过程)详解
- 《Java源码分析》:CopyOnWriteArrayList/ CopyOnWriteArraySet
- 亲测 可用 des 加密
- js 单例模式
- 数组方法大全
- 解决JavaScript拖动时触发点击事件的BUG
- Java关键字及其作用汇总列表
- SwipeMenuListView
- 敏捷回顾会之鼓舞热情
- Trimble.Business.Center.v3.90.6369.58741 Trimble TILOS v9.0+TILOS
- 按钮倒计时的实现 iOS
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(一) Logstash demo演示
- 浅谈java内存泄露
- 一个jQuery的弹窗显示后消失,