微信小程序开发说实话还是有点糟心的,经过事件冒泡的坑之后,又遇到了长按事件(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. 计算机视觉方向简介 | 手机产品条码检测方案
  2. wxWidgets学习 (1) -- Hello World 详解
  3. Python之网络图片爬取
  4. Linux的Nginx一:概况
  5. 【重要通知】结构设计新班开课——本轮主讲电动牙刷产品结构设计
  6. fw325r虚拟服务器,fw325r管理页面
  7. 下行法求最小割集案例_最小割集求法.docx
  8. 【解决】如何将腾讯QLV格式的视频转换成MP4
  9. cpu和接口之间数据传送控制方式
  10. jpa mysql lob_Jpa加载Lob字段报Unable to access lob stream异常
  11. ios文件和文件夹管理
  12. 最新软件外包网站有哪些?
  13. Python办公自动化 5.1 Python操作ppt:win32com 使用教程 操作复制ppt PowerPoint
  14. 改变base64加密图片的大小
  15. 自己动手写CPU(11)——加载存储指令说明
  16. qt matlab环境配置文件,Qt与matlab混合编程
  17. 广州哪个大学大一计算机学ps,紧急!广东12所“野鸡大学”名单曝光!广州人千万别上当!...
  18. 【STC8A8K64S4A12开发板】—RS485总线通信
  19. java 中如何打包成 jar 包
  20. t440 安装os 10.11 笔记1(win8 os x 双系统)

热门文章

  1. Spring Boot一键换肤,so easy!
  2. 架构设计的本质:系统与子系统、模块与组件、框架与架构
  3. 「Linux」作怪的网络
  4. 优雅地处理重复请求(并发请求)——附Java实现
  5. 还在用if(obj!=null)做非空判断?带你快速上手Optional实战性理解!
  6. 分布式定时任务调度系统技术选型
  7. Java并发编程73道面试题及答案——稳了
  8. 学姐分享:在求职路上少走一些弯路
  9. 沈向洋博士:三十年科研路,我踩过的七个坑
  10. 2840 页的计算机毕业论文,这位华人小哥的博士论文究竟写了啥?