window.postMessage() 是如何使用的
时间: 2024-11-29 11:13:46 浏览: 11
`window.postMessage()` 是 HTML5 中的一个重要 API,主要用于在同源策略允许的情况下,在不同窗口(如父框架、子框架或弹出窗口)之间安全地交换数据。其基本语法如下:
```javascript
parentWindow.postMessage(data, targetOrigin, [transfer]);
```
参数说明:
1. **data**: 你想发送的数据,可以是字符串、JSON对象或其他JavaScript可序列化的值。
2. **targetOrigin**: 发送数据的目标窗口的 URL。如果目标是一个特定的元素(比如`<iframe>`),你可以传入该元素的`contentWindow`属性。
3. **transfer** (可选): 如果有需要转移的对象,可以传递一个数组作为第三参数,表示要将哪些对象从当前上下文复制到目标上下文中。默认情况下,仅文本信息会被传递。
示例:
- **发送数据**:
```javascript
window.postMessage('Hello from child page', '*'); // 向所有窗口发送
```
- **接收数据**(在父页面或另一个窗口):
```javascript
window.addEventListener('message', function(event) {
if (event.origin !== '*' && !event.origin.includes('example.com')) { // 验证来源
console.log('Received data:', event.data);
}
}, false);
```
阅读全文