替换相应url参数的值产生后续问题

296 阅读1分钟

问题:开红包页面点击开后,右上角分享按钮分享到微信还存在(只限ios,安卓不存在),刷新页面后才消失

问题原代码:

mounted() {
    代码省略N行,大致意思就是获取数据,如下一行所示
    this.getData()
    // 设置金融app内标题背景色并隐藏
    if (uabrowser.jdjr && !uabrowser.kepler) {
      this.$nextTick(() => {
        setNaviBar({
          hideTools: true,
          textColor: 2
        });
      });
    }
  },
  
getData: async function() {
    此处省略N行代码,大致就是调用接口获取数据
    // 修复浏览任务开红包返回异常,此处就是调用替换url参数方法  
      if(GetQueryString('shareId')){
        replaceState({'shareId':''});
      }
}  

详情见:替换相应url参数的值

问题原因:window.history.replaceState并不会重新加载页面,所以在getData中调用并不会刷新页面,但是当前页面url发生了变化,因为参数变了。
猜想:JSBridge会根据url变化去交互,url变了,重新去交互JSBridge,但是在去除参数

if(GetQueryString('shareId')){
        replaceState({'shareId':''});
      }

后并没有了隐藏setNaviBar代码(此处代码需要调用金融桥文件),所以会出现微信分享,重新刷新页面后会消失

注意:至于为什么只出现在ios中,不出现在安卓中,可能是金融JSBridge自身的bug.

修复方案:替换url后重新调用setNaviBar,如下所示:

// 修复浏览任务开红包返回异常
      if(GetQueryString('shareId')){
        replaceState({'shareId':''});
        // 设置金融app内标题背景色并隐藏
        if (uabrowser.jdjr && !uabrowser.kepler) {
          this.$nextTick(() => {
            setNaviBar({
              hideTools: true,
              textColor: 2
            });
          });
        }
      }