1. 发送消息
在使用 postMessage 时,首先需要确定要发送消息的目标窗口。可以通过 window.open 打开的窗口对象,或者通过 document.getElementById 获取的 iframe 元素的 contentWindow 属性来获取目标窗口。
// 获取目标窗口对象
var targetWindow = document.getElementById('myIframe').contentWindow;
// 发送消息
targetWindow.postMessage('Hello from parent!', 'https://example.com');
在上述代码中,'https://example.com' 是目标窗口的源,确保消息只会发送到来自这个源的窗口。
2. 接收消息
接收消息的一方需要监听 message 事件,通过 event.data 来获取发送过来的数据。
window.addEventListener('message', function(event) {
// 检查消息来源
if (event.origin === 'https://example.com') {
console.log('Received message:', event.data);
}
}, false);
三、参数详解
postMessage 方法接受两个主要参数:
message: 发送的消息内容,可以是字符串、对象等。
targetOrigin: 指定消息接收方的源,必须是字符串形式,包括协议、域名和端口号。如果指定为 '*',表示不限制目标窗口的源。