postmessage用法
时间: 2023-11-04 07:59:28 浏览: 36
postMessage是一种在不同的窗口或文档之间进行通信的方法。它可以让一个窗口或文档向另一个窗口或文档发送消息,并且可以传递任何的JavaScript对象。
postMessage的语法如下:
```javascript
targetWindow.postMessage(message, targetOrigin, [transfer]);
```
其中:
- `message`是要发送的消息,可以是任何JavaScript对象。
- `targetWindow`是要接收消息的窗口对象,可以是当前窗口的父窗口、子窗口或其他窗口。
- `targetOrigin`是接收消息的窗口的域名或IP地址,用于验证消息的来源。如果不确定接收窗口的地址,可以设置为`*`。
- `transfer`是可选参数,表示需要传递的对象,如`ArrayBuffer`或`MessagePort`等。
在接收消息的窗口或文档中,可以通过`window.addEventListener`方法来监听`message`事件,然后进行相应的处理。例如:
```javascript
window.addEventListener('message', function(event) {
if (event.origin !== 'http://example.com') return;
console.log(event.data);
});
```
上面的代码会监听`message`事件,并在接收到消息后,判断消息的来源是否是`http://example.com`,如果是,则输出消息的内容。
总的来说,postMessage可以让不同的窗口或文档之间进行安全的跨域通信,可以用于实现单点登录、跨域数据共享等功能。