微信小程序webview与VUE H5实时通讯具体步骤

 更新时间:2025年09月15日 08:58:14   作者:小周同学:  
微信小程序与H5通信是在日常开发中总会遇到的场景,下面这篇文章主要介绍了微信小程序webview与VUE H5实时通讯的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

背景:

微信小程序、vue2搭建开发的H5页面,需要实现实时通信

在微信小程序开发中,会遇到嵌套H5页面,H5页面需要向微信小程序发消息触发微信小程序某个函数方法,微信开发文档上写的非常不清楚,导致踩了很多坑,该文章总结可直接使用方法。

在开发中 ,微信小程序内嵌webview,H5想要与微信小程序发消息,必须要使用微信文档中的wx.miniProgram的方法,但想要在H5中使用该方法,必须需要引入JSSDK.js文件,官方其实并没有给出明确的引入方式。

具体实现步骤

1、配置域名

首先想要实现通讯,我们webview中嵌套的H5必须要配置在微信公众号开发平台的业务域名

登录微信公众平台-在管理-开发管理-开发设置-业务域名中配置我们访问的H5(该权限需要小程序管理员才能配置)

2、SDK文件引入

在vue项目也就是我们H5项目中引入JSSDK 1.6.0,(目前是这个版本,具体可查看web-view | 微信开放文档

踩坑点:有很多文章写的需要在根项目index.html文件中引入,类似

但是不知道为什么,我在这引入无法实现通讯

后来改用在需要操作的H5页面上引入(这是我们的H5页面),这样引入就能调用wx.miniProgram里面的方法

  mounted() {
    this.$nextTick(() => {
      const script = document.createElement("script");
      script.src = "https://res.wx.qq.com/open/js/jweixin-1.6.0.js";
      script.onload = () => {};
      document.head.appendChild(script);
    });
  },

3、使用

H5实例:(注意使用wx.miniProgram.postMessage这个API会有限制:向小程序发送消息,会在以下特定时机触发组件的message事件:小程序后退、组件销毁、分享、复制链接)这些操作才会进行接收,所以我这里直接使用了navigateTo跳转一个新的界面来接收传递过来的参数

<template>
  <button @click="submitForm">按钮</button>
</template>
<script>
import { Toast } from "vant";
export default {
  mounted() {
    this.$nextTick(() => {
      const script = document.createElement("script");
      script.src = "https://res.wx.qq.com/open/js/jweixin-1.6.0.js";
      script.onload = () => {};
      document.head.appendChild(script);
    });
  },
  methods: {
    submitForm() {
      // 判断 wx 是否存在(防止在浏览器中报错)
      if (typeof wx !== "undefined" && wx.miniProgram) {
        wx.miniProgram.navigateTo({
          url: "/pages/webview/pay?status=success&orderId=12345",  //我这里直接使用了navigateTo做界面跳转,并传递了参数
        });
        Toast("消息已发送给小程序");
      } else {
        Toast("当前不在小程序 web-view 环境,无法发送消息");
      }
    }
  }
};
</script>

然后在我们的小程序pay.vue中可以这样接收

<template>
  <view></view>
</template>
 
<script>
  export default {
   data() {
    return {
    }
   },
   onLoad(options) {
    console.log(options)
   },
  }
</script>

4、注意点

在微信开发文档中有写明,wx.miniProgram.postMessage只有在特定时机才会触发message事件,什么意思呢,就是我在H5页面点击了操作按钮,向小程序发送了消息,这时候小程序并不会实时收到我的消息,而是在我 操作了webview或者上面协议几种情况才会触发小程序端的@message才会收到消息,他们的交互并不是实时的。

所以在实际业务中,要根据文档灵活变通,例如我这里的交互是在H5页面点击操作需要跳转到小程序内的某个页面,我这里直接用的是wx.miniProgram.navigateTo,这时候就可以在新的界面接收H5传递过来的参数了。

总结

到此这篇关于微信小程序webview与VUE H5实时通讯的文章就介绍到这了,更多相关微信小程序与VUE H5实时通讯内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue网站优化实战之秒开网页

    vue网站优化实战之秒开网页

    最近在搭建自己的博客,前端采用Vue技术,发现首页加载速度非常之慢,常常达到10S左右,遂开始优化之旅,这篇文章主要给大家介绍了关于vue网站优化实战之秒开网页的相关资料,需要的朋友可以参考下
    2022-08-08
  • vue的template模板是如何转为render函数的过程

    vue的template模板是如何转为render函数的过程

    Vue从template到render函数的转换经历模板解析、AST构建、优化、生成渲染函数等步骤,首先进行词法分析将模板拆解为tokens,再进行语法分析构建AST,然后对AST进行静态标记和提升优化,最后转换成JavaScript渲染函数,生成虚拟DOM,完成组件的渲染和更新,实现了模板的高效转化
    2024-10-10
  • 记一次vue去除#问题处理经过小结

    记一次vue去除#问题处理经过小结

    这篇文章主要介绍了vue去除#问题处理经过,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • postcss-pxtorem设置不转换UI框架的CSS单位问题

    postcss-pxtorem设置不转换UI框架的CSS单位问题

    这篇文章主要介绍了postcss-pxtorem设置不转换UI框架的CSS单位问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • vuejs如何解决浏览器切换页面后setInterval计时器停止执行的问题

    vuejs如何解决浏览器切换页面后setInterval计时器停止执行的问题

    setinterval()是定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式,这篇文章主要给大家介绍了关于vuejs如何解决浏览器切换页面后setInterval计时器停止执行的问题,需要的朋友可以参考下
    2024-01-01
  • Vue 中v-model的完整用法及v-model的实现原理解析

    Vue 中v-model的完整用法及v-model的实现原理解析

    这篇文章详细介绍了Vue.js中的v-model指令的使用,包括基本用法、原理、结合不同类型的表单元素(如radio、checkbox、select)以及使用修饰符(如lazy、number、trim)等,感兴趣的朋友一起看看吧
    2025-02-02
  • 探究Vue.js 2.0新增的虚拟DOM

    探究Vue.js 2.0新增的虚拟DOM

    vue.js 2.0大家对此并不陌生吧。最令人兴奋的是更新页面的"虚拟DOM"的加入。那么对于虚拟 DOM 可以做什么呢?今天小编通过本文给大家解答下
    2016-10-10
  • Vue3+TypeScript封装axios并进行请求调用的实现

    Vue3+TypeScript封装axios并进行请求调用的实现

    这篇文章主要介绍了Vue3+TypeScript封装axios并进行请求调用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Vue+Axios实现文件上传自定义进度条

    Vue+Axios实现文件上传自定义进度条

    这篇文章主要为大家详细介绍了Vue+Axios实现文件上传自定义进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Vue 数组和对象更新,但是页面没有刷新的解决方式

    Vue 数组和对象更新,但是页面没有刷新的解决方式

    今天小编就为大家分享一篇Vue 数组和对象更新,但是页面没有刷新的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论