收藏
回答

如何解决小程序中webview页面多层history返回问题?

我微信小程序使用webview 跳转到H5页面 ,在到H5页面1静默授权,使用window.location.href = webUrl 获取到code,然后我点击回退按钮,会返回至页面1而不会返回至小程序的页面,请问这该如何解决,我试过监听新老路由变化,来调wx JDk来跳转,但是 发现页面1跳转到页面2 老路由的name是null参数也是空值, 然后我在到页面2回退到页面1发现 老路由的参数和页面1跳转到页面2 是一致的无法判断,


下面是网上搜索到的一种方法,但是我有些疑惑

比如说我从页面2在跳转到页面3 然后页面3回退到页面2他是不是也会执行wx.miniProgram.navigateBack();这个呢

    window.addEventListener('popstate', (event) => {
      console.log('656+')
      wx.miniProgram.navigateBack()
    })
    if (!cache.getSession('Code')) {
      // 1 在小程序里 2 在微信环境  3 不在微信环境
      if (this.layer.isEnv() != 3 && !query.code && !query.orderId) {
        let abc = encodeURIComponent(window.location.href)
        console.log(abc)
        this.req.wxCode({
          appId: query.appId
        }, res => {
          if (res.appId) {
            let webUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + res.appId +
                '&redirect_uri=' + abc + '&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect'
            console.log(webUrl, cache.getSession('Code'))
            console.log(window.location.href = webUrl)
            window.location.href = webUrl
            cache.setSession('one', '1')
          }
        })
      }
    } else {
      console.log('456')
      history.pushState({
        page: 1
      }, null, window.location.href)
    }

最后一次编辑于  2021-03-25
回答关注问题邀请回答
收藏

1 个回答

  • 有棱角的胖子
    有棱角的胖子
    2021-03-25

    跳转的时候缓存存个值,页面2判断缓存有那个值就调jssdk跳转可以吗

    2021-03-25
    有用
    回复 2
    • 小刘
      小刘
      2021-03-25
      我设置了缓存值Session,但是我不知道H5页面回退到小程序后,H5页面的缓存是否清除了,因为我根据新老路由判断跳转,回到小程序页面后,有时候在次点击进入H5页面,会自动给我回退到小程序页面
      2021-03-25
      回复
    • 有棱角的胖子
      有棱角的胖子
      2021-03-25回复小刘
      那你回退前把缓存删了不就行了
      2021-03-25
      回复
登录 后发表内容
问题标签