微信小程序长按事件触发点击事件的BUG处理

news/2024/9/9 14:10:53

微信小程序开发说实话还是有点糟心的,经过事件冒泡的坑之后,又遇到了长按事件(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')}
})
  • 效果

longtap触发tap演示

解决方法

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')}
})

看一下效果

longtap触发tap演示

延伸

大部分情况下,我们都是不需要在touchend中加锁的,因为长按操作会触发其他的异步操作,只要保证异步操作的最后把锁解除了即可。


http://lihuaxi.xjx100.cn/news/280410.html

相关文章

分布式架构知识体系

点击上方“方志朋”&#xff0c;选择“置顶或者星标”你的关注意义重大&#xff01;1.问题1、何为分布式何为微服务&#xff1f;2、为什么需要分布式&#xff1f;3、分布式核心理论基础&#xff0c;节点、网络、时间、顺序&#xff0c;一致性&#xff1f;4、分布式是系统有哪些…

html弹性重叠,关于html5弹性布局(2)

在前面的一篇文章中&#xff0c;我很简单介绍了弹性布局的概念&#xff0c;这里我将介绍弹性布局的实例化。理解弹性布局&#xff0c;并不是那么简单&#xff0c;因为弹性布局的基础和思想&#xff0c;和我们传统的盒装模式不同&#xff0c;所以必须要深入接受这种弹性布局的思…

当前最佳的YOLOv4是如何炼成的?细数那些小细节

选自medium作者&#xff1a;Jonathan Hu机器之心编译参与&#xff1a;Panda、Racoon X前段时间&#xff0c;突然发布的 YOLOv4 成了计算机视觉领域一大热点新闻。这个目标检测任务的 SOTA 模型究竟有何创新&#xff1f;这篇解读文章为你一一拆解。目标检测在近几年开始发展成熟…

应届生参加工作,什么事情越早知道越好?

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达本文转自 | 深度学习与计算机视觉作者&#xff1a;秋瑾小妞https://www.zhihu.com/question/407372614/answer/1398121517一看到这个问题&#xff0c;就想到之前刚入职场时…

计算机专业今后的发展方向

计算机专业毕业后&#xff0c;大致的工作方向是软、硬、网、图 四大类&#xff0c;尤其以软件、网络为现今的首选 。从岗位上分&#xff0c;又可以分为技术道路、营销道路两大方向。 if 你选择硬件技术&#xff0c;then 从现在开始&#xff0c;牢记&#xff1a;天道酬勤&#x…

说说SELinux工作原则

SELinux使用所谓的委任式访问控制&#xff08;Mandatory Access Control,MAC&#xff09;,可以根据特定的程序和特定的文件资源进行权限的管理。即使是root用户&#xff0c;在使用不同的程序时&#xff0c;你所能获得的权限不一定是root&#xff0c;需要根据程序的设定。 一、S…

程序员老司机“随意开车”,恶搞代码让你分分钟玩死程序员!

1&#xff0e;问题描述在屏幕上画出奥运五环旗整人代码&#xff1a;你打开好友的聊天对话框,然后记下在你QQ里好友的昵称,把下面代码里的xx替换一下,就可以自定义发送QQ信息到好友的次数(代码里的数字10改一下即可).xx.vbs>On Error Resume NextDim wsh,yeset wshcreateobje…

金融业加速智能化,解析360金融AI基础架构和应用

传统金融信贷业务中&#xff0c;催收、客服及电销人员占比超过 60%&#xff0c;人员素质参差不齐的现状造成了管理成本过高的问题&#xff0c;由此衍生的客户体验差&#xff0c;也成为困扰金融业的一大通病。 8 月 15 日&#xff0c;在 360金融 AI 媒体开放日上&#xff0c;360…