微信小程序中内内嵌的H5界面,需要通过点击按钮来实现跳转到其他小程序。想通过web-view
来实现直接跳转,结果失败了(难道就实现不了了吗?)。
查阅了微信官方的文档,也没有给出具体解决方法,只有小程序跳转其他小程序的相关api,于是突发奇想,能否让嵌入的H5界面跳转到当前小程序页面,然后不就是小程序跳转小程序了吗,感觉可行,就尝试了一波。
小程序中内嵌的H5页面通过点击之后需要跳转至目标小程序,首先需要跳转到内嵌的小程序界面,然后使用微信apiwx.navigateToMiniProgram()’
实现跳转目标小程序,达到用户可以从内嵌的H5页面中跳转到目标小程序的目的。
1.在H5页面中处理好需要传递的参数
// pages/wx/wx 当前小程序页面
let url = `/pages/wx/wx?appid=${appid}&path=${encodeURIComponent(path)}`
2.调用wx.miniProgram.navigateTo()
方法跳转至当前嵌入的小程序界面,携带跳转小程序所需的参数,这里以appid
和path
为例,path中因为还有其他参数,所以这里使用JavaScript的encodeURIComponent()
进行转码处理。
wx.miniProgram.navigateTo({url: url});
3.在小程序界面中接收参数,path需要使用decodeURIComponent()
方法解码,然后在调用 wx.navigateToMiniProgram()
方法来跳转目标小程序。
需要注意的是wx.navigateToMiniProgram()
方法需要用户手动触发,为此我在调用之前添加了一层wx.showModal()
方法。
wx.showModal({
title: "温馨提示",
content: "xxx提示内容",
cancelText: "取消", //默认是“取消”
cancelColor: "#000000", //取消文字的颜色
confirmText: "确定", //默认是“确定”
confirmColor: "#0378D8", //确定文字的颜色
success: function (res) {
if (res.cancel) {
//用户点击取消
wx.navigateBack();
} else {
// 打开目标小程序
wx.navigateToMiniProgram({
appId: that.appid,
path: that.path,
success(res) {
// 打开成功
console.log(res);
},
fail() {
wx.navigateBack();
},
});
}
},
fail: function (res) {
wx.navigateBack();
},
complete: function (res) {
console.log(res);
},
});
踩坑不易,点赞支持一下呗!
上一篇:微信小程序之地理定位
下一篇:在网页H5中打开微信小程序的功能