window.postMessage()实现跨源通信
// 父页面脚本
window.onload = function() {
var iframe = document.getElementById('crossDomainIframe');
iframe.onload = function() {
// 当iframe加载完成后发送消息
iframe.contentWindow.postMessage('Hello, I am the parent', 'http://example.com');
};
// 监听message事件
window.addEventListener('message', function(event) {
if (event.origin === "http://example.com") {
console.log("收到来自iframe的消息:", event.data);
}
});
};
// iframe页面脚本
window.onload = function() {
// 监听message事件
window.addEventListener('message', function(event) {
if (event.origin === "http://parent.com") {
console.log("收到来自父页面的消息:", event.data);
// 回复消息
event.source.postMessage('Hello, I am the iframe', event.origin);
}
});
};
这个例子展示了如何在父页面和iframe之间使用window.postMessage()
进行跨源通信。父页面在iframe加载后发送消息,iframe页面监听到消息后回复,并且父页面也监听iframe发回的消息。注意,示例中的URL仅为说明用途,实际使用时应当替换为正确的域名。
评论已关闭