vue项目中iframe嵌套其他项目,iframe父子页面传值
场景:vue后台管理系统项目嵌入其他项目
一、iframe引入其他项目地址
<iframe
ref="newScreen"
@load="sendMessage"
frameborder="0"
:src="url"
width="100%"
height="100%"
id="ysOpenDevice"
allowfullscreen>
</iframe>
二、父页面向子页面传值
由于某些功能需要鉴权,故在原系统登录后获取token传给子页面
父页面绑定onload事件
mounted() { let ts = new Date().getTime() this.url = 'http://localhost:8090/#/home/xxxx?_'+ts
this.iframeWin = this.$refs.newScreen.contentWindow; },
方法定义:
sendMessage() { this.iframeWin.postMessage({ token: localStorage.getItem('access_token') }, '*') },
子页面接收:
created() { window.addEventListener('message', this.handleMessage) }, methods: { handleMessage (event) { const {token} = event.data console.log('token',token) }, }
三、子页面向父页面传值
由于嵌入的项目需要与原项目交互,跳转到对应菜单,故需传值给父页面
子页面传值方法
let data = { xxx: '', yyy: '', zzz: { } } window.parent.postMessage(data, '*')
父页面接收
mounted() { window.addEventListener('message', this.handleMessage) }, methods: { handleMessage(event) { const { xxx, yyy, zzz} = event.data }, }
四、说明
- iframe缓存:在iframe指向的页面地址后缀添加一个时间戳。确保每次加载时,让浏览器知道它是最新的页面,避免缓存
- 页面卸载前注销监听事件
注意:当使用webpack时,webpack自身会发送postMessage,注意监听message时区分具体是自己发来的message还是webpackOK
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本