收藏
回答

小程序嵌套H5页面左滑出现重复页面,该怎么解决呢?

//小程序代码  使用了以下代码做webview的src切换路径   
//在服务器js中使用了wx.miniProgram.navigateTo({ url: "index?url=StudentHome/AddPlan&title=更换科目&type=更换科目" })去和小程序通信
//但是使用手机调试时发现左滑时出现上面图片的重复好几次,请问是什么问题呢?该怎么解决呢?
Page({
  data: {
    motto: 'Hello World',
    url:"",
    httpUrl:"https://域名/项目名称/",//"https://localhost:44331/"
    webViewSrc:'',
    navTitle:'',
    PinJie:'',
    userInfo: { 
      avatarUrl: defaultAvatarUrl,
      nickName: '',
    },
    hasUserInfo: false,
    canIUseGetUserProfile: wx.canIUse('getUserProfile'),
    canIUseNicknameComp: wx.canIUse('input.type.nickname'),
  },
  onLoad(option){
    var thatData= this.data;
    thatData.url=option.url;
    thatData.navTitle=option.title;
    if(option&&option.url){
        for (let key in option) {
            if(key!="url"&&key!="title"){
               thatData.PinJie+="&"+key+"="+option[key];
            }
        }
    }
  },
  onShow(){ 
      var that=this;
      var thatData=this.data;
      this.data.webViewSrc="";
      if(thatData.url){
        that.setData({
            webViewSrc: thatData.httpUrl+thatData.url+"?v="+new Date().getTime()+thatData.PinJie
        });
        console.log(getCurrentPages());
    }else{
        that.setData({
            webViewSrc: thatData.httpUrl+"StudentUser/Login"
          });
    }
  },
  methods: {
    // 事件处理函数
    bindViewTap() {
      wx.navigateTo({
        url: '../logs/logs'
      })
    },
  },
  loadSuccess:function(e){
    wx.setNavigationBarTitle({
        title: this.data.navTitle
    })
},
receiveMessage:function(e){
    //修改拼接
    if(this.data.url=="StudentHome/AddPlan"){
        if(e.detail.data){
            var SubjectID=e.detail.data[0].SubjectID;
            var SubjectName=e.detail.data[0].SubjectName;
            this.data.PinJie="&SubjectID="+SubjectID+"&SubjectName="+SubjectName;
        }
    }
},
})
回答关注问题邀请回答
收藏

4 个回答

  • 社区技术运营专员--阳光
    社区技术运营专员--阳光
    03-03

    H5提供下呢

    03-03
    有用
    回复 3
    • Kilig
      Kilig
      03-03
      03-03
      回复
    • Kilig
      Kilig
      03-03
      你好,是这样的
      03-03
      回复
    • 社区技术运营专员--阳光
      社区技术运营专员--阳光
      03-05回复Kilig
      直接提供复现链接吧
      03-05
      回复
  • Kilig
    Kilig
    03-06
    //直接在h5页面拦截后退事件,比较笨拙   就不会出现很多个 重复的页面
    //虽然解决了,但是需要在每个h5页面都加上后退的逻辑
    //我不理解到底是小程序的页面栈在控制还是webview的缓存在控制。谁能解答我的难题吗?
        (function () {
            if (window.history && window.history.pushState) {
                window.addEventListener('popstate', function () {
                    if (1 == 1) {
                        //直接清空
                        wx.miniProgram.reLaunch({ url: "index?url=StudentHome/Index&title=首页" })
                        //wx.miniProgram.closeWindow();这个感觉没用
                    }
                });
                window.history.pushState('forward', null, '');
                window.history.forward(1);
            }
        })();
    
    03-06
    有用
    回复
  • H1HAO 🇨🇳
    H1HAO 🇨🇳
    03-01

    感觉是多次连续点击跳转了多次,建议添加连点检测拦截

    03-01
    有用
    回复 1
    • Kilig
      Kilig
      03-02
      不太理解诶,可以说的再详细一点吗
      03-02
      回复
  • 启年
    启年
    03-01

    必现吗?是不是手机比较卡

    如果手机比较卡的时候,上个页面连续多次点击跳转,会打开很多个目标页面。

    03-01
    有用
    回复 1
    • Kilig
      Kilig
      03-01
      手机不卡呢,我怀疑是我的跳转出了问题欸
      03-01
      回复
登录 后发表内容