问题:开红包页面点击开后,右上角分享按钮分享到微信还存在(只限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
});
});
}
}