赞
踩
需求:需要在小程序中嵌入一个网页webview,点击webview中的按钮时,需要返回到上一级页面并传参
html网页部分代码如下:
第一步,必须引入两个包,且微信sdk在上,uni的sdk在下,放在body下面
- <!-- 微信 JS-SDK -->
- <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
- <!-- uni 的 SDK -->
- <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
第二步,给按钮添加点击事件:
uni.postMessage是给小程序中webview页面绑定的@message事件发送数据的,且uni.postMessage只在特定时机触发[网页向应用 postMessage
时,会在特定时机(后退、组件销毁、分享)触发并收到消息。]
所以我在uni.postMessage后,立即后退(uni.navigateBack),可以成功触发uni.postMessage
- <script>
- document.addEventListener("UniAppJSBridgeReady", function () {
- uni.postMessage({
- data: {
- isSucess: '1'
- }
- })
- $('#back').on('click', function (s) {
- uni.navigateBack()
- });
- })
-
- </script>
以上,html网页代码已经准备好!如下是小程序的(uniapp)
在小程序里嵌入一个webview,这是微信小程序中的代码(uniapp写的)如下
第一步,需要先在webview中绑定网址,绑定message事件(到时候网页传参就用这个函数接收)
第二步,因为在网页中先触发了传参,然后立即就回到了上一个页面,所以如果我们需要在上个页面接收到参数,就必须要小程序的webview页面接收参数,然后通过页面栈修改上个页面的参数!
@message绑定的事件参数,在 e.detail.data中
- getMessage(e) {
- console.log(e, '传递的参数h5')
- let pages = getCurrentPages()
- let prevPage = pages[pages.length - 2]
- prevPage.$vm.isSucess = e.detail.data[0].isSucess
- }
———————————————————————————————————————————
发现个bug,在iphone中可以实现,但在安卓机中返回不了上一级,现在修改如下:
uni的sdk 需要放在本地中,网页需要布署到服务器中!
经测试,ios和安卓机都可完美实现需求
- <!-- uni 的 SDK -->
- <script type="text/javascript" src="./assets/uni.webview.1.5.2.js"></script>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。