feat: 跨域跨窗口父子窗口之间通过postMessage通信
parent
5c07d8461c
commit
6471ca3361
@ -0,0 +1,35 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta
|
||||||
|
name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1.0"
|
||||||
|
/>
|
||||||
|
<title>Child Window</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div>我是子窗口</div>
|
||||||
|
<button id="sendMsg">点击给父窗口发送信息</button>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let parentWindow;
|
||||||
|
|
||||||
|
// 监听来自父窗口的消息
|
||||||
|
window.addEventListener('message', (event) => {
|
||||||
|
// 验证消息来源
|
||||||
|
if (event.origin === 'https://your-parent-domain.com') {
|
||||||
|
console.log('接受父窗口跨域跨标签消息', event.data);
|
||||||
|
parentWindow = event.source;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('sendMsg').onclick = function () {
|
||||||
|
// 方式一,必须依赖父窗口先发消息给子窗口
|
||||||
|
// parentWindow.postMessage('给父窗口传跨域跨标签消息', 'https://your-parent-domain.com');
|
||||||
|
// 方式二,可以直接给父窗口发消息
|
||||||
|
window.opener.postMessage('给父窗口传跨域跨标签消息', 'https://your-parent-domain.com');
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue