嵌套结构:
外:A项目;
iframe:B项目url;
问题:
A项目通过iframe嵌套B项目链接,但是填报完毕不能及时关闭iframe窗口,通过子B项目发送postMessage通知A项目关闭iframe页面,于此同时还可以做B项目数据发送A项目问题,可以解决大部分AB项目通过iframe嵌套的交互问题;
<div class="iframeWrap">
<iframe class="iframeSty" :src="src" id="iframeOrigin"></iframe>
</div>
B项目:发消息
// 发送postMessage通知A项目关闭iframe
console.log("postMessage发送开始111!");
const msg = { name: "closeIframe1" }
const opener = window.opener
opener.postMessage(msg, "*")
console.log("postMessage发送完毕!");
A项目:接收信息
// 接受B项目页面的postMessage,返回上一页
let iframeOrigin = document.getElementById('iframeOrigin')
let that = this
iframeOrigin.contentWindow.addEventListener("message", (e) => {
console.log('接受bpm页面的postMessage:',e.data);
if (e.data.name == 'closeIframe') {
that.$router.back()
}
});