当前位置:   article > 正文

webview和小程序通信uniapp_webview中页面调用uniapp小程序扫码

webview中页面调用uniapp小程序扫码

需求:需要在小程序中嵌入一个网页webview,点击webview中的按钮时,需要返回到上一级页面并传参

html网页部分代码如下:

第一步,必须引入两个包,且微信sdk在上,uni的sdk在下,放在body下面

  1. <!-- 微信 JS-SDK -->
  2. <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
  3. <!-- uni 的 SDK -->
  4. <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

  1. <script>
  2. document.addEventListener("UniAppJSBridgeReady", function () {
  3. uni.postMessage({
  4. data: {
  5. isSucess: '1'
  6. }
  7. })
  8. $('#back').on('click', function (s) {
  9. uni.navigateBack()
  10. });
  11. })
  12. </script>

以上,html网页代码已经准备好!如下是小程序的(uniapp)

在小程序里嵌入一个webview,这是微信小程序中的代码(uniapp写的)如下

第一步,需要先在webview中绑定网址,绑定message事件(到时候网页传参就用这个函数接收)

第二步,因为在网页中先触发了传参,然后立即就回到了上一个页面,所以如果我们需要在上个页面接收到参数,就必须要小程序的webview页面接收参数,然后通过页面栈修改上个页面的参数!

@message绑定的事件参数,在 e.detail.data中

  1. getMessage(e) {
  2. console.log(e, '传递的参数h5')
  3. let pages = getCurrentPages()
  4. let prevPage = pages[pages.length - 2]
  5. prevPage.$vm.isSucess = e.detail.data[0].isSucess
  6. }

———————————————————————————————————————————

发现个bug,在iphone中可以实现,但在安卓机中返回不了上一级,现在修改如下:

 uni的sdk 需要放在本地中,网页需要布署到服务器中!

经测试,ios和安卓机都可完美实现需求

  1. <!-- uni 的 SDK -->
  2. <script type="text/javascript" src="./assets/uni.webview.1.5.2.js"></script>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/899930
推荐阅读
相关标签
  

闽ICP备14008679号