Window postMessage()
时间: 2024-06-12 19:09:40 浏览: 8
window.postMessage() 是一个用于跨窗口通信的 API。通过这个 API,我们可以在不同窗口之间传递数据。
使用 window.postMessage() 时,需要指定接收消息的窗口的 origin,以确保安全性。如果不指定 origin,则接收到消息的窗口可能会收到来自不可信来源的消息。
window.postMessage() 的语法如下:
```javascript
otherWindow.postMessage(message, targetOrigin, [transfer]);
```
其中,message 是要传递的数据;targetOrigin 是接收窗口的 origin;transfer 可选,用于传递 ArrayBuffers 或 Transferable Objects。
例如,我们可以在一个 iframe 中使用 window.postMessage() 向父窗口传递数据:
```javascript
// 在 iframe 中
window.parent.postMessage('hello', 'https://parent.com');
// 在父窗口中
window.addEventListener('message', (event) => {
if (event.origin === 'https://child.com') {
console.log(event.data); // 'hello'
}
});
```
相关问题
window.postMessage
window.postMessage是一种在不同窗口之间进行跨源通信的方法。它允许一个窗口向另一个窗口发送消息,以实现数据的传递和交互。使用postMessage时,需要指定目标窗口和消息内容,并可以选择指定目标窗口的地址。
具体用法如下所示:
otherWindow.postMessage(message, targetOrigin, [transfer]);
其中,otherWindow是目标窗口的window对象,message是要发送的消息内容,可以是字符串或对象,targetOrigin是接收消息窗口的地址,用于限制只有指定的窗口可以接收到消息,可选择为"*"表示无限制,transfer是可选参数,用于传输数据。
例如,在一个窗口中使用postMessage发送消息:
var win = window.opener ? window.opener : window.parent;
function sendMsg(){
var val = document.getElementById("msg").value;
if(win){
win.postMessage(val, "*");
}
}
在另一个窗口中,可以通过监听message事件来接收消息:
window.addEventListener("message", function(e){
document.getElementById("msg").value = e.data;
})
window.postmessage
`window.postMessage` 是 JavaScript 中的一个方法,可以在不同窗口或标签页之间进行消息传递。它接受两个参数:要发送的数据和接收窗口的源(origin)。使用这个方法可以在页面之间进行安全的数据传输。