Vue3使用iframe引入本地html文件出问题,会一直调用自己的主页界面,不会调用我引入的界面
先直接访问你 iframe的路径看一下 是什么
iframe和图片一样,传入的路劲非完整路劲就会加上当前域名,所以访问的还是你当前主页,加上域名或者使用绝对路径
不知道你这个问题是否已经解决, 如果还没有解决的话:父页面代码:
<template>
<div>
<div class="box">
<span>当前页接收的iframe信息:</span>
<span style="color:red;">{{receive}}</span>
</div>
<div class="box">
<el-input placeholder="输入内容向iframe发送" v-model="msg.content" style="width:180px;"></el-input>
<el-button @click="Send">发送</el-button>
</div>
<div style="height:500px">
<iframe
:src="url"
ref="iframe"
style="height: 100%;width:100%; frameborder=no"
frameborder="no"
border="0"
marginwidth="0"
marginheight="0"
></iframe>
</div>
</div>
</template>
<script>
export default {
mounted() {
window.addEventListener("message", event => {
this.receive = event.data.content;
});
},
data() {
return {
url: "http://192.168.1.194:8080/child",
receive: "",
msg: { content: "" }
};
},
methods: {
Send() {
this.$refs.iframe.contentWindow.postMessage(this.msg, "*");
}
}
};
</script>
iframe页面代码:
<template>
<div>
<div class="box">
<span>iframe接收的信息:</span>
<span style="color:red;">{{receive}}</span>
</div>
<div class="box">
<el-input placeholder="输入内容向父页面发送" v-model="msg.content" style="width:180px;"></el-input>
<el-button @click="Send">发送</el-button>
</div>
</div>
</template>
<script>
export default {
mounted() {
window.addEventListener("message", event => {
debugger;
this.receive = event.data.content;
});
},
data() {
return {
receive: "",
msg: { content: "" }
};
},
methods: {
Send() {
window.parent.postMessage(this.msg, "*");
}
}
};
</script>
页面效果:
如果addEventListener多次被调用,可以试试下面这种方法
window.onmessage = function (event) {}