当前位置: 首页 > article >正文

window.postMessage使用

一、项目需求

       比如a、b两个项目,在a项目中点击路由页面显示b项目的页面。使用iframe来显示b项目。

a点击跳转时需将b项目中需要的数据传递过去。

WebApi文档:window.postMessage - Web API | MDN

二、代码实现

a项目中需要显示b项目的页面vue文件

<template>
  <div>
    <iframe :src="iframeUrl" width="100%" height="800px" ref="myIframe" @load="onIframeLoad"></iframe>
  </div>
</template>

<script lang="ts" setup>
import { ref, onMounted } from 'vue';
const myIframe = ref(null); // iframe 的引用
const iframeUrl = 'https://st.camel.com.cn/'; // 其他项目的 URL
const data = {
  userId: 123,
  userName: 'John Doe',
  token: 'abc123',
};

function onIframeLoad(){
  if(myIframe.value && myIframe.value.contentWindow){
    myIframe.value.contentWindow.postMessage(data, '*');
  }
}
</script>

b项目接收 原本我是在b项目中的vue文件中监听发送的数据但是获取不到。然后我就在router文件中,路由守卫中监听。

router.beforeEach((to, from, next) => {
  // 监听父组件发送的消息
  window.addEventListener('message', (event) => {
    const { userId, userName, token } = event.data;
    console.log('Received data from parent:', userId, userName, token);
  });

 });


http://www.kler.cn/a/596039.html

相关文章:

  • webpack使用详细步骤
  • 【Qt】Qt + Modbus 服务端学习笔记
  • 大腾智能受邀出席2025华为云城市峰会暨东莞市人工智能大模型中心开服活动
  • 快速查询手机是否处于联网状态?
  • Redis的大Key问题如何解决?
  • 什么是 DAO?
  • MinIO Docker
  • 数据可信安全流通实战,隐语开源社区Meetup武汉站开放报名
  • FPGA中级项目4——DDS实现
  • 工业数据驱动智能维护的深度调研报告
  • 基于Python的垃圾短信分类
  • 【AI论文】DropletVideo:一种用于探索整体时空一致视频生成的数据集与方法
  • 三层交换实验:实现不同 VLAN 间通信的详细探究
  • 气候预测新模式:助力行业迎接未来挑战
  • 音频录制小妙招-自制工具-借助浏览器录一段单声道16000采样率wav格式音频
  • RAG 架构地基工程-Retrieval 模块的系统设计分享
  • 论文笔记(七十三)Gemini Robotics: Bringing AI into the Physical World
  • HarmonyOS next性能优化:多维度策略与实战案例
  • 同旺科技USB to I2C 适配器 ---- 扫描I2C总线上的从机地址
  • Function Calling的核心机制与挑战