免费国产欧美国日产_少妇AV一区二区三区无码_蜜桃精品av无码喷奶水小说_jk18禁网站视频_精产国品一二三级产品区别_被夫の上司に犯波多野结衣_78m成人手机免费看_最爽最刺激18禁视频_偷偷色噜狠狠狠狠的777米奇

易優(yōu)GEO 重磅上線 ~ 一站式GEO優(yōu)化工具,讓豆包、文心一言、DeepSeek 在回答中主動推薦你的品牌,搶占AI流量入口!  點擊查看

小程序模板網(wǎng)

問答《四十七》小程序長按事件觸發(fā)點擊事件的BUG處理

發(fā)布時間:2017-11-23 17:33 所屬欄目:小程序開發(fā)文檔

微信小程序開發(fā)說實話還是有點糟心的,經(jīng)過事件冒泡的坑之后,又遇到了長按事件(longtap)必觸發(fā)點擊事件(tap)的BUG實例代碼wxmlview class="container" view button bindtap="tap" bindlongtap="longtap"長按我/butt ...

 
 
 

微信小程序開發(fā)說實話還是有點糟心的,經(jīng)過事件冒泡的坑之后,又遇到了長按事件(longtap)必觸發(fā)點擊事件(tap)的BUG

實例代碼

  • wxml

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

Page({
  data: {
  },
  tap: function() {
    console.log('觸發(fā)了 tap')
  },
  longtap: function () {
    console.log('觸發(fā)了 longtap')
  }
})
  • 效果

解決方法

Google后確定是小程序有意(B)為(U)之(G)后,看了一下網(wǎng)上的解決方法,基本都是通過touchstarttouchend重新判定taplongtap事件的,個人不是很喜歡。

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

  • tap, 手指觸摸后馬上離開

  • longtap, 手指觸摸后,超過350ms再離開

也就是說,目前的觸發(fā)的順序是 longtap -> touchend -> tap

那么其實解決也很清晰了,簡單來說就是 加把鎖, 應(yīng)用到上面的代碼上:

Page({
  data: {
    lock: false
  },
  tap: function() {
    //檢查鎖
    if (this.data.lock) {
      return;
    }
    console.log('觸發(fā)了 tap')
  },
  touchend: function() {
    if (this.data.lock) {
      //開鎖
      setTimeout(() => {
        this.setData({ lock: false });
      }, 100);
    }
  },
  longtap: function () {
    //鎖住
    this.setData({lock: true});
    console.log('觸發(fā)了 longtap')
  }
})

看一下效果

延伸

大部分情況下,我們都是不需要在touchend中加鎖的,因為長按操作會觸發(fā)其他的異步操作,只要保證異步操作的最后把鎖解除了即可。

 

微信小程序的分享問題

問:這個是文檔的分享API,帶參數(shù)分享出去 , 當(dāng)用戶點擊進(jìn)來的時候,我并不能在onload的options獲取 ,請問我該如何獲取這個ID呢?

答:這個方法試一試。`onLoad:function(options){

var id=options.id;

}`



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.szcjxy.com/wxmini/doc/develop/17923.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢: 點擊咨詢
在線客服