vue中子应用中没有iframe怎么接父应用iframe传的值
时间: 2023-07-06 21:13:23 浏览: 80
在Vue子应用中没有iframe的情况下,可以通过组件间通信来接收父应用传递的值。有多种方式可以实现组件间通信,比如使用Vuex、Event Bus、props等。下面以props为例来说明:
1. 在父应用中通过postMessage将值传递给Vue子应用,如:
```
const childWindow = document.getElementById('childWindow').contentWindow;
childWindow.postMessage('Hello, World!', '*');
```
2. 在Vue子应用的入口文件main.js中监听window对象的message事件,如:
```
window.addEventListener('message', function(event) {
if (event.origin !== 'http://localhost:8080') return; // 验证消息来源
console.log(event.data); // 输出接收到的值
});
```
3. 在Vue子应用中定义一个组件并接收该值,如:
```
<template>
<div>{{message}}</div>
</template>
<script>
export default {
props: {
message: String
}
}
</script>
```
4. 在父应用中引入Vue子应用并将接收到的值通过props传递给该组件,如:
```
import Vue from 'vue';
import App from './App.vue';
new Vue({
el: '#app',
render: h => h(App, { props: { message: 'Hello, World!' }})
});
```
这样,在Vue子应用中就可以通过props接收到父应用传递的值了。需要注意的是,如果在Vue子应用中监听window对象的message事件,需要验证消息的来源,防止恶意攻击。
阅读全文