优雅的实现小程序-webview-跳转到另外一个小程序
目录
优雅的实现小程序 webview 跳转到另外一个小程序
今天公司要一个逻辑,h5页面可以被两个小程序调用,调用这个h5以后里面有一个小跳转,小程序A和小程序B点击都可以跳转到小程序B的一个页面。
只要实现下面的代码即可
wx.navigateToMiniProgram({
appId: '',
path: 'page/index/index?id=123',
extraData: {
foo: 'bar'
},
envVersion: 'develop',
success(res) {
// 打开成功
}
})
这不是很简单嘛,但是等我细细的看过后,我才发现跳转页面是小程序内嵌h5写的,小程序A通过webview跳转到小程序A一点都不难,难的是小程序A通过webview跳转到小程序B,我细细一想,实现的逻辑是这样的
- 小程序A–webview–小程序B
这个可以实现吗,,很抱歉,目前小程序并不支持通过内嵌h5的方式跳转到另外一个小程序
技术无难事,我们可以通过另外一种优雅的方式进行小程序内嵌h5跳转到另外一个小程序
具体的实现方式如下
小程序A–webview(内嵌h5)–小程序A–小程序B
废话不多说,看代码
在小程序A中如下
//跳转到一个webview,jsonUrl是数据
wx.navigateTo({
url: '/pages/webView/webView?src='+jsonUrl,
})
在h5的页面如下
ShopInfo(){
console.log("aaaaa")
//find是小程序传过来的数据
//若是find等于1,就说明这个页面是通过A打开的,点击按钮跳转到小程序B
//若find等于0,就说明这个页面是通过小程序B打开的,点击按钮跳转到小程序B
if(this.find=="1"){
wx.miniProgram.switchTab({//switchTab是跳转到导航栏的页面
url: '/pages/Shop/Shop?&type=10&id='+Id+'&agentId='+agentId,
})
}
else{
wx.miniProgram.navigateTo({//navigateTo是跳转到非导航栏的页面
url: '/pages/Shop/Shop?&type=10&id='+Id+'&agentId='+agentId,
})
}
},
走到这一步,小程序A通过webview跳转到小程序A就是实现了,下面实现跳转到小程序B的方法。
小程序B新建一个空白页面Shop(可以随便命名,只是为了跟小程序A的跳转页面相同,所以也命名为shop)
onLoad: function (options) {
console.log(options)//webview的穿过来的数据都在这里
wx.navigateToMiniProgram({//在这里实现跳转到小程序A的功能
appId: '这里写要跳转的appid',
url: '/pages/Shop/Shop?&type=10&id='+options.id+'&agentId='+options.agentId,
success(res) {
console.log("cg")
}
})
},
这样子我们的逻辑就实现了,在这个h5页面,若是小程序A打开,它这个按钮点击就跳往小程序B的页面。若是小程序B打开,就跳转到小程序的B页面,成功实现,打完收工。