h5和uniapp通信

混合开发中,uniapp嵌套h5页面的情况下,想进行双方通信,怎么办呢?

uniapp中,整个项目都是写在h5中的,相当于uniapp只是一个壳子,这样开发的话,就可以热更新:

一、h5→uniapp

①h5页面,需要在index.html中引入文件,在使用页面中就可以用postMessage把信息传过去。 index.html

js 复制代码
<script type="text/javascript" src="./src/utils/uniwebview.js"></script>
<script>
document.addEventListener('UniAppJSBridgeReady', function() {
  uni.webView.getEnv(function(res) {
    console.log('当前环境:' + JSON.stringify(res));
  });
});

</script>

②h5使用页面:

js 复制代码
const onPrint = async (item) => {
  const imageAddress = await projectApi.getPayQR(item.id);
  
  uni.postMessage({
    data: {
      code: '5',
      info: item.producerName,
      time: dayjs().format('YYYY-MM-DD HH:mm'),
      imageAddress: imageAddress,
    }
  });
}

③uniapp页面,在backMeaasge中获得h5传递过来的信息 h5→uniapp

js 复制代码
<template>
  <view class="content">
   <web-view   
      src="http://192.168.xx.xxx:3000"
      @message="backMessage"
    ></web-view>
  </view>
  
</template>

<script>
      backMessage(event) {
        console.log('h5传回来的----', event.detail.data[0].code);
        if(event.detail.data[0].code === 5) {
          console.log('打印了', event.detail.data[0].info)
        }
      },
</script>

二、uniapp→h5

①uniapp中,

js 复制代码
    const currentWebview = that.$scope.$getAppWebview();
    const html = currentWebview.children()[0];
    html.evalJS(`blueresult(${JSON.stringify(list[i])})`);

②h5中,uniapp中的evalJs中的名字和window.后面的名字要一致。

js 复制代码
window.blueresult = function(device) {
    deviceList.value.push(device)
    console.log("蓝牙传设备回来了:", deviceList.value);
  }
相关推荐
BBB努力学习程序设计18 分钟前
了解响应式Web设计:viewport网页可视区域
前端·html
zhangyao94033020 分钟前
uni-app scroll-view特定情况下运用
前端·javascript·uni-app
码农张20 分钟前
从原理到实践,吃透 Lit 响应式系统的核心逻辑
前端
jump68021 分钟前
object和map 和 WeakMap 的区别
前端
打小就很皮...27 分钟前
基于 Dify 实现 AI 流式对话:组件设计思路(React)
前端·react.js·dify·流式对话
这个昵称也不能用吗?35 分钟前
【安卓 - 小组件 - app进程与桌面进程】
前端
kuilaurence38 分钟前
CSS `border-image` 给文字加可拉伸边框
前端·css
一 乐42 分钟前
校园墙|校园社区|基于Java+vue的校园墙小程序系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·小程序
一只小阿乐1 小时前
前端react 开发 图书列表分页
前端·react.js·react·ant-
IT古董1 小时前
在 React 项目中使用 Ky 与 TanStack Query 构建现代化数据请求层
前端·react.js·前端框架