首页 > 编程语言 >微信小程序嵌入H5,从H5获取数据返回小程序页面(wx.miniProgram.postMessage)

微信小程序嵌入H5,从H5获取数据返回小程序页面(wx.miniProgram.postMessage)

时间:2023-02-24 13:47:39浏览次数:58  
标签:微信 程序 H5 miniProgram 获取数据 wx 页面

https://www.jianshu.com/p/469d89273a3f

 

需求:微信小程序使用 web-view 组件嵌入H5链接,从H5页面中获取某些数据在微信小程序页面中进行处理。

微信文档中有 web—view 组件的使用方法,以及配置H5网页域名的设置(https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html);(不配置域名信任,网页在真机上无法运行)

这里直接简单的说下微信小程序端 和 H5端 的代码处理,以及文档上没有的细节说明:

微信小程序端代码:

// html
<web-view src="https://*********" bindmessage="bindmessage"></web-view>

// js
 bindmessage: function (e) {
    let dataArr = e.detail.data
    console.log(dataArr);
  },

使用 bindmessage 接收从H5传递过来的数据,这个数据是以数组的形式传递过来的。

H5 端代码:

H5端想要与微信小程序进行交互,需要引入一个微信js插件库,引入方式有两种:
第一种(在需要交互的页面):
 <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>

第二种:
$ npm i weixin-js-sdk

注意:第二种方式引入的库,需要在需要交互的页面声明引入

import wx from 'weixin-js-sdk';


// H5传递数据 (navigateBack)
wx.miniProgram.navigateBack({delta: 1});
wx.miniProgram.postMessage({
  data: {
          code: codeStr
        }
  });

传递的数据为 code: code,这里面的 key(code) 和 content (codeStr)都可以自定义替换成自己想要的;但是 data 层不可以去掉;
注意 navigateBack 方法 和 postMessage 方法的顺序,写反了会导致小程序端(bindmessage)不回调;
因为 网页向小程序 postMessage 时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息。e.detail = { data },data是多次 postMessage 的参数组成的数组(微信文档)。
这种方式传递消息时,微信小程序会自动返回上一个页面,因为 H5执行了 wx.miniProgram.navigateBack({delta: 1}); (delta: 1 返回一层)可设置返回多层;

// H5传递数据 (navigateTo)
wx.miniProgram.navigateTo({
   url: '/pages/webLoading/webLoading?code=' + codeStr
 })

以跳转小程序指定页面方式传参,让小程序端提供页面路径并拼接参数跳转过去,小程序端可在提供的页面( onl oad(options) {} )中接收拼接的参数;

还有剩余的三种方式(switchTab、 reLaunch、 redirectTo)与 navigateTo 传递参数方式类似,大家可以自己试试效果,这里就不做说明了

部分微信版本在真机调试中,获取不到H5端传递过来的数据,可以试试 预览 模式,或者 上传体验版,扫描体验码看效果。

标签:微信,程序,H5,miniProgram,获取数据,wx,页面
From: https://www.cnblogs.com/zhoading/p/17151124.html

相关文章

  • electron教程3-打包您的应用程序
    官方文档:https://www.electronjs.org/zh/docs/latest/tutorial/tutorial-first-app一、导入你的项目到Forge将ElectronForge的CLI工具包安装到项目的 devDependen......
  • 小程序Excel导入导出数据库功能
    https://blog.csdn.net/yhcad/article/details/116204444unitUmain;interfaceuses Winapi.Windows,Winapi.Messages,System.SysUtils,System.Variants, System.Cl......
  • windows下仅允许一个程序联网,并禁止其他所有程序联网
    打开防火墙和网络防护,可见使用的公用网络,以公用网络为例点击高级设置,点击windowsdefender防火墙属性出站连接选择阻止点击出站程序,新建规则,选择程序。下一步,选择......
  • 微信小程序与内嵌h5页面之间的参数传递
    https://blog.csdn.net/weixin_46032911/article/details/128506919小程序是采用vue+taroui技术栈1.内嵌h5页面向小程序传参:1h5页面所在文件:h5.vue//页面跳转函数--前......
  • 微信小程序的全局弹窗以及全局实例
    全局组件微信小程序组件关系中,父组件使用子组件需要在父组件index.json中引入子组件,然后在父组件页面中使用,这种组件的对应状态是一对一的,一个组件对应一个页面。如果有一......
  • Electron Forge 打包并分发您的应用程序
    关联文档:使用Electron打包exe程序最快捷的打包方式是使用 ElectronForge。文档地址https://www.electronjs.org/zh/docs/latest/tutorial/quick-start1.将Elec......
  • 《程序是怎样跑起来的》第七章
        这章学习了程序是在何种环境中运行的,运行环境不同,程序是无法运行的,而操作系统和硬件决定了程序的运行环境。    同一类型的硬件可以选择安装多种操作......
  • 第十章 通过汇编语言了解程序的实际构成
        计算机CPU能直接解释运行的只有本地代码(机器语言)程序。用C语言等编写的源代码,需要通过各自的编译器编译后,转换成本地代码。    在加法运算的本地代码......
  • 随便玩玩之C# 11 程序控制-循环foreach
    随便玩玩之C#11程序控制-循环foreach 1.foreachforeach循环可以遍历集合中的所有项。语法如下:foreach(类型变量名in集合对象){......
  • 随便玩玩之C# 10 程序控制-循环while和do while
    随便玩玩之C#10程序控制-循环while和dowhile这两个也是循环。1.while当while条件为真时,执行循环体。如果条件不成立,一次也不执行。intsum=0;......