- 同源之间才能通信,所以选择用域名进行传递消息
- 传递消息方
window.addEventListener('message', (e) => {
const params = {name: 'test'}
window.parent && window.parent.postMessage(params, url) // url 为传递的域名
})
- 接受消息方
// 第一个参数为这个事件监听器的类型,'message' 表示会监听当前窗口接收到的消息
// 第二个参数为接受消息后的回调函数,在回调函数中,我们可以对发送的消息的源进行一些验证,从而保证安全性。
// e 上面有很多属性,origin 表示发送消息窗口的源。data表示传递过来的数据
window.addEventListener('message', (e) => {
// 检查发送消息窗口的源
if (e.origin === 'https://www.baidu.com'){
console.log('接受的参数', e.data)
}
})