bindtap 多次点击,可以打开N个窗口,目前在华为手机上出现,其他机型没测试
发布于 5 年前 作者 caiqiang 15363 次浏览 来自 问答
<view class="toufang row" bindtap="{{setTask}}" data-href="taskSet/taskRewen/index">view>
bindViewTap: function(event) {
   
   var accountId=app.getAccountId();
   if(!accountId){
       app.getUserInfo(function(userInfo){})
   }
   var url=event.currentTarget.dataset.href;
    wx.navigateTo({
      url: "../"+url
    })
 }

快速的多次点击就会出现打开多过窗口。(第一次加载的页面没有这种情况,是在内页出现)。建议修复或给出解决方案。谢谢

问题已经解决,自己琢磨了一下,可以根据timeStamp的时间差来设置

1、在app.js定义全局变量 lastTapTime 

globalData:{
    lastTapTime : 0
}

2、设置事件的时间差

var app = getApp();
 
bindViewTap: function(event) {
   var url=e.currentTarget.dataset.href;
      var time=e.timeStamp;
      //设置无效点击,根据自己的需求设置,这里navigateTo切换页面到动画结束需要的时间为500毫秒左右
      if(time - app.globalData.lastTapTime < 500 && app.globalData.lastTapTime != 0){
            app.globalData.lastTapTime = time;//这里一定更新无效点击的时间
            return;
      }
      //更新有效点击的时间
      app.globalData.lastTapTime = time;
      wx.navigateTo({
        url:url
      })
 }

大家可以尝试封装成方法,调用即可。

2 回复

逗我呢?一个小程序里面有多少个bindtap事件,难道每一个都去定义吗?这微信小程序在做bindtap事件的时候没有做的精细

自己定个状态呗

var ret=true;

//点击

if(!ret){returm;}

ret=false;

//

//执行的代码

ret=true;

//

回到顶部