
vue嵌套iframe传参 通信
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue

·
首先了解iframe 是什么?
iframe是html元素,用于在网页中内嵌另一个网页。每个iframe里各自维护自己的全局window对象。
接下来就是iframe之间的通讯的 一般会用于 父页面传递Token给子页面
1.父页面代码
HTML
<template>
<div >
<iframe name="myiframe" id="myrame-record-query" src="http://192.168"
frameborder="0" align="middle" width="80%" height="900px"></iframe>
</div>
</template>
js 在vue的生命周期里面
向子组件传递 token参数
<script>
mounted() {
var that = this
this.iframe = document.getElementById('myrame-record-query')
this.iframe.onload = function () {
// iframe加载完成后要进行的操作 这里要等 iframe加载完毕
let param = {
token:"***"
}
this.iframe.contentWindow.postMessage(param, '*')*号可以指定任意域名
}
}
</script>
2.子页面代码
子页面接受 父页面传递的参数
mounted() {
window.addEventListener('message', (ev) => {
// 在这里可以打印一下ev ev中的data属性是父级传的参数
console.log(ev.data);
})
}
这里扩展一下 如果子页面要往父页面传递数据
子页面
beforeCreate() {// 可以在生命周期 方法等 去传递方法给父页面
window.parent.postMessage({ "自定义键": "自定义值" }, '*') //*号可以指定任意域名
},
父页面
这里跟子页面接受数据的方法一样
mounted() {
window.addEventListener('message', (ev) => {
// 在这里可以打印一下ev ev中的data属性是子级传的参数
console.log(ev.data);
})
}
·亿点小知识
父页面在往子页面传递参数的时候 有时候会 ev.data是undefined 这个时候能不要慌
我们先观察一下 data里面多了个type属性 type: "webpackOk"
这是因为 package 在进行编译的时候先调用了一次 iframe 这时候我们在开发的时候把携带 type 的给过滤掉就好了!
以上就是iframe 嵌套 通信的方法。如遇到其他问题可以私信我一起探讨!




vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:6 个月前 )
9e887079
[skip ci] 5 个月前
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 8 个月前
更多推荐
所有评论(0)