背景:uniapp开发的小程序(简称UNI)页面A用Webview内嵌vue开发的h5,想从h5直接跳到UNI页面B。
前序:
https://blog.csdn.net/weixin_47072581/article/details/131422638
之前遇到UniAppJSBridgeReady事件不触发的问题,用上述链接解决了。但是!突然有一天,它又不行了TAT 怀疑还是sdk引入方式的问题,于是换了一种引入方式,改成从main.js引入。
step1: 把uni.webview.1.5.2.js下载到本地,放入utils文件夹
https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js
step2:main.js引入
import * as uni from '@/utils/uni.webview.1.5.4';
document.addEventListener('UniAppJSBridgeReady', function() {
Vue.prototype.uni = uni
console.log("初始化uniapp的API成功");
})
step3:业务页面使用
console.log("this.uni: ", this.uni);
this.uni.webView.getEnv(function (res) {
console.log("methods webView 当前环境: " + JSON.stringify(res));
});
打印一下,可以看到如下结果
如图,getEnv已经可以正常使用了。但是!uni.webView.redirectTo死活不行(无报错,success和fail的回调函数console也没打出来,也没中止,能够继续往下执行,就像无事发生一样....),使用uni.redirectTo也不行。
看了很多帖子,也引入了微信sdk,微信sdk和uniapp sdk的引用顺序也没问题。也怀疑是微信sdk和uniapp sdk版本不兼容,也试了网上能成功执行的版本,也还是不行。没办法,只能换个方法了,准备试试直接使用微信sdk。
step1:npm安装
npm install weixin-js-sdk --save
step2:main.js引入
import jssdk from 'weixin-js-sdk'
Vue.prototype.$wx = jssdk // 挂载全局
step3:业务页面使用
this.$wx.miniProgram.navigateTo({
url: "/pages/mainapp-face/mainapp-face?bizToken=" + this.bizToken + "&id=" + this.id
});
/pages/xxx/xxx为UNI页面B,注意页面B要在UNI pages.json中注册,注册时的path没有/,但是使用时跳转url要/
{
"path": "pages/mainapp-face/mainapp-face",
"style": {
"navigationBarTitleText": "人脸核身"
}
}
能成功跳转啦!
p.s. 未解之谜:之前h5 index.html在线引入,能成功初始化uniapp sdk,并能成功使用uni.redirectTo,但是啥都没改突然不行了,求大神解惑TAT