收藏
回答

如何解决小程序中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
回答关注问题邀请回答
收藏

2 个回答

  • 睡前原谅一切
    睡前原谅一切
    2021-03-25

    看你描述是用这个?

    window.location.replace(webUrl)


    2021-03-25
    有用 1
    回复 8
    • 小刘
      小刘
      2021-03-25
      window.location.replace(webUrl)
      这个我也用过,但是回退还是会回退到页面1
      2021-03-25
      回复
    • 睡前原谅一切
      睡前原谅一切
      2021-03-25回复小刘
      你是小程序内加载页面A,页面A点击按钮跳转页面B授权,授权后的回调地址是页面A?
      2021-03-25
      回复
    • 小刘
      小刘
      2021-03-25回复睡前原谅一切
      我是在小程序中使用web-view跳转到页面A,在到页面A的created生命周期静默授权跳转到页面B,页面B的路径和页面A的路径相差的只有静默授权返回的参数Code
      2021-03-25
      回复
    • 睡前原谅一切
      睡前原谅一切
      2021-03-25回复小刘
      授权成功后到页面A,在页面A判断授权成功过了,使用wx.miniProgram.navigateBack() ?
      2021-03-25
      回复
    • 小刘
      小刘
      2021-03-25回复睡前原谅一切
      授权成功后就在授权页面了,页面B
      2021-03-25
      回复
    查看更多(3)
  • 有棱角的胖子
    有棱角的胖子
    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
      回复
登录 后发表内容
问题标签