微信小程序开发说实话还是有点糟心的,经过时间冒泡的坑之后,又遇到了长按事件(longtap)必触发点击事件(tap)的BUG 如下代码
<viewclass="container"> <view> <buttonbindtap="tap"bindlongtap="longtap">长按我</button> </view> </view>
Page({ data: { }, tap: function(){ console.log('触发了 tap') }, longtap: function(){ console.log('触发了 longtap') } })
解决方法Google后确定是BUG后,看了一下网上的解决方法,基本都是通过 touchstart 和 touchend重新判定 tap 和 longtap 事件的,个人不是很喜欢。 看一下微信小程序的事件定义:
也就是说,目前的触发的顺序是 longtap -> touchend -> tap 那么其实解决也很清晰了,简单来说就是 加把锁 , 应用到上面的代码上: Page({ data: { lock: false }, tap: function(){ //检查锁 if (this.data.lock) { return; } console.log('触发了 tap') }, touchend: function(){ if (this.data.lock) { //开锁 setTimeout(()=> { this.setData({ lock: false }); }, 100); } }, longtap: function(){ //锁住 this.setData({lock: true}); console.log('触发了 longtap') } }) 看一下效果 延伸大部分情况下,我们都是不需要在 touchend 中加锁的,因为长按操作会触发其他的异步操作,只要保证异步操作的最后把锁解除了即可。 |
微信小程序长按事件触发点击事件的BUG处理
发布:2018-04-20 10:57浏览: 次来源:网络 作者:cola
免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。
相关文章
- 微信小程序app.json文件常用配置说明2021-07-09
- 微信小程序文字控制单行超过显示省略号2021-07-09
- 微信小程序参数传递的几种方法2021-07-09
- 微信小程序使用button按钮分享2021-07-09
- 微信小程序的setData2021-07-09
- 小程序分享,获取openid2021-07-08
- 微信小程序-实现tab2021-07-08
- 微信开发者工具新建和导入小程序2021-07-08
- 微信小程序实现点击拍照长按录像功能2021-07-08
- 微信小程序必知知识2021-07-08