微信小程序和H5之间互相跳转、互相传值
最近又开始写小程序了,刚好遇到微信小程序和内嵌 H5 之间来回跳转,来回交互;这里记录一下微信小程序和 H5 之间交互的实现;(我的小程序是通过 un-app 框架来写的,内部代码基本都是 vue)
文章目录
一、微信小程序跳转 H5
1、web-view
微信小程序官方提供了 web-view
组件来实现微信小程序跳转到 H5 页面,实现的方式也很简单,具体实现方式如下:
1、新建一个页面用来单独存放 web-view 组件,并且所有的内嵌 H5 都可以通过这个页面来实现跳转;
//web-view<web-view :class="lazy" data-src="url"></web-view>export default{data(){return{url:''}},onLoad(option){this.url = option.url}}
其他小程序页面跳转只需要将 H5 的地址拼接在路径上;
//其他小程序页面let url = 'xxxx';uni.navigateTo({url: `/pages/webview/webview?url=${url}`})
二、H5跳微信小程序
H5 往微信小程序跳转需要借助微信 JS-SDK(官方文档),官方提供的是引入 js 文件的方式来使用微信 JS-SDK;当然在 vue 的项目里我们还可以以依赖的方式来安装:weixin-js-sdk;
1、H5 直接跳到微信小程序
可以借助微信 sdk 里面的标签( wx-open-launch-weapp)直接跳转;不过这种方式需要申请配置:
- 已认证的服务号(公众号),服务号绑定“JS接口安全域名”下的网页可使用此标签跳转任意合法合规的小程序。
- 已认证的非个人主体的小程序,使用小程序云开发的静态网站托管绑定的域名下的网页,可以使用此标签跳转任意合法合规的小程序。
<wx-open-launch-weapp id="launch-btn" username="gh_xxxxxxxx" path="pages/home/index?user=123&action=abc"> <script type="text/wxtag-template"> <style>.btn { padding: 12px }</style> <button class="btn">打开小程序</button> </script></wx-open-launch-weapp>
这种方式可以跳转到任何小程序,不过需要用户的点击操作才能跳转,跳转的同时,H5页面可以把需要传递的参数通过 path 路径拼接的方式将参数传递过去;
可参考:开发标签说明文档
2、内嵌H5跳转到微信小程序
这种不需要配置,直接就可以通过微信 sdk 提供的方法来实现跳转;注意:只能跳转回当前小程序;
wx.miniProgram.navigateTo({url:''})wx.miniProgram.navigateBack({url:''})wx.miniProgram.switchTab({url:''})wx.miniProgram.reLaunch({url:''})wx.miniProgram.redirectTo({url:''})
完整的操作应该是:
//先判断当前环境是小程序环境wx.miniProgram.getEnv(function(res){if(res.miniprogram){//跳转到小程序页面wx.miniProgram.navigateTo({url:"/pages/xxx"})}})
三、微信小程序传值给内嵌H5
1、路径传参
小程序直接通过修改 web-view 的 class="lazy" data-src 属性就行了,将需要传递的参数拼接在路径上,H5 页面之间通过 query 来拿参数;
//其他小程序页面let url = 'xxxx?name=xxx&number=123';uni.navigateTo({url: `/pages/webview/webview?url=${url}`})
四、内嵌H5传值给微信小程序
以下两种方式都需要在 H5 的 index.html 页面引入下面 js:
<script type="text/javascript" class="lazy" data-src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
1、用 postMessage
在 web-view 组件上有一个属性 bindmessage
,网页向小程序 postMessage
时会触发并接收消息;
//web-view<web-view :class="lazy" data-src="url" @message="getMessage"></web-view>export default{data(){return{url:''}},onLoad(option){this.url = option.url}methods:{getMessage(e){//接收参数,也可以跳转到小程序其他页面将参数传递过去console.log(e.detail)}}}
//H5页面wx.miniProgram.postMessage({ data: {name: 'xxx'} })
2、路径传参
调用微信 wx.miniProgram
API 跳转到小程序页面时,通过路径拼接把参数传递过去;
wx.miniProgram.navigateTo({ url:"/pages/xxx/xxx/xxx?name=xxx"});
来源地址:https://blog.csdn.net/weixin_43299180/article/details/127921932
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341