微信小程序开发说实话还是有点糟心的,经过事件冒泡的坑之后,又遇到了长按事件(longtap)必触发点击事件(tap)的BUG

实例代码

  • wxml

<view class="container"><view><button bindtap="tap" bindlongtap="longtap">长按我</button></view>
</view>
  • js

Page({data: {},tap: function() {console.log('触发了 tap')},longtap: function () {console.log('触发了 longtap')}
})
  • 效果

解决方法

Google后确定是小程序有意(B)为(U)之(G)后,看了一下网上的解决方法,基本都是通过touchstarttouchend重新判定taplongtap事件的,个人不是很喜欢。

看一下微信小程序的事件定义:

  • tap, 手指触摸后马上离开

  • longtap, 手指触摸后,超过350ms再离开

也就是说,目前的触发的顺序是 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处理相关推荐

  1. 如何解决微信小程序用户高频率触发点击事件?

    <view bindtap='debounce' bindtouchstart="touchStart" bindtouchend="touchEnd"& ...

  2. 微信小程序长按和点击同时存在时,2个都会触发的问题

    问题描述: 在列表上实现长按弹框删除,点击进入详情页.在模拟器上正常,但在手机端,长按同时会触发点击. 长按.点击触发顺序: 点击:touchstart → touchend → tap        ...

  3. 微信小程序入门一:点击事件

    公众号:柏战不殆(Baiman_Ber) //index.js Page({data:{src:'../images/公众号.jpg',data:'点击我呀'},//点击事件click:functio ...

  4. 微信小程序 — 长列表组件 recycle-view 详细教学

    微信小程序 - 长列表组件 recycle-view 踩坑问题全解 写在前面 引入长列表组件 recycle-view 长列表组件 recycle-view 的使用 问题一.如何增加下拉刷新功能? 问 ...

  5. 微信小程序长按保存图片

    微信小程序长按保存图片 wxml部分 <image data-url="{{item}}" bindlongtap="longPressSaveImg " ...

  6. 微信小程序长按图片发送给好友

    问题描述 微信小程序长按图片发送给好友 解决方法 直接在<image></image>标签添加:show-menu-by-longpress="true" ...

  7. 微信小程序长按识别二维码,小程序相关问题总结

    微信小程序长按识别二维码,小程序相关问题总结 开发小程序中,长按识别二维码,小程序码跳转,已知问题整理: 小程序中,不支持长按识别二维码,和小程序码. 可利用小程序 图片预览功能识别 小程序码并进行跳 ...

  8. 微信小程序---地图导航(点击地址,可以进行导航)

    微信小程序-地图导航(点击地址,可以进行导航) // 地图getLocation(e){var that = this,address = e.currentTarget.dataset.addres ...

  9. 微信小程序for循环里面添加input事件

    1,在微信小程序for循环里面添加input事件,并把input输入值添加到列表里面 2.wxml <view class="item" wx:for="{{lis ...

  10. 微信小程序使用echarts实时更新数据以及常见bug

    ** 微信小程序使用echarts实时更新数据以及常见bug ** 参考echarts官方文档:https://echarts.apache.org/zh/tutorial.html 下载小程序ech ...

最新文章

  1. 豆瓣评分 9.3,史上最好的 C 语言著作,竟然翻车了......
  2. 6.18docker(一)Compose 模板文件
  3. python编程软件v-Thonny(Python编程工具) V3.2.5 官方版
  4. python模块基础之getpass模块
  5. 这便是有三AI一年的底蕴,那些5000粉丝1000阅读量的AI技术干货
  6. 06-在IDEA中实战Git
  7. Python Tricks(十四)—— list 逆序的实现
  8. 五种进程调度的算法实现(二)
  9. Linux进阶之Jenkins持续集成介绍及安装演示
  10. 数字图像来源:光学成像系统
  11. S7-200SMART与昆仑通态触摸屏以太网通信的具体方法和步骤(图文)
  12. 2017中国云计算评测报告 1
  13. android webview goback 刷新,解决webview调用goBack()返回上一页自动刷新闪白的情况
  14. html判断是苹果,JavaScript判断是否是iPhone X系列机型,H5和其他环境兼容
  15. Linux内核配置(16)
  16. 华为ddm的datax的bug
  17. 反向数——两种形式的反向数
  18. KMP算法之next数组详解
  19. 基于C语言实现的医院管理系统
  20. php 怎么上传图片,php怎么把图片上传到图片服务器

热门文章

  1. 西湖大学全是“天坑”?校长施一公直播回应:不必过于关注就业收入
  2. DIY最美数字女友!MIT开源最强虚拟人生成器,登Nature子刊
  3. AI最佳论文都在这里了!(非常全,快领!)
  4. “半价买2080Ti”,英伟达发布RTX 30系列显卡,性能翻倍价格更低,网友高呼“NVIDIA YES”...
  5. 人人都能看懂的LSTM
  6. 李德毅院士:通用人工智能十问
  7. 360董事长周鸿祎发表全员信:疫情当前,要做好长期在家办公的准备
  8. 我在 GitHub 上看到了一个丧心病狂的开源项目!治好了我的拖延症
  9. RESTful之权限Permissions
  10. Linux之cp和mv命令选项