js postMessage 实现跨域发送消息-应用示例

postMessage 可以跨域发送消息

parentPage.html 父页面(A地址下) 界面添加 打开子页面按钮、发送消息按钮

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<button onclick="openPage()">打开子页面</button>
		<button onclick="sendMsg()">发送消息</button>
		<script>
			let childWindow = null;
			
			function openPage(){
				childWindow = window.open('http://localhost:8011/','_blank');
			}
			
			function sendMsg(){
				if (!childWindow || childWindow.closed) {
					childWindow = window.open('http://localhost:8011/','_blank');
				}
				
				setTimeout(function () {
					childWindow.postMessage("发送消息内容测试", "http://localhost:8011/");
					// childWindow.postMessage("发送消息内容测试", "*");
				}, 300);
			}
		</script>
	</body>
</html>

子页面subPage.html(B地址下)

html 复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			window.addEventListener("message", receiveMessage, false);
			
			function receiveMessage(event) {
				console.log('收到消息:', event.data,event.source,window.opener);
				
				if (!event.source || event.source !== window.opener) {
					return;
				}
				
				// 这里用父窗口作为来源校验,适配本地文件/本地服务器打开方式
				console.log('来自父页面的消息:', event.data);
			}
		</script>
	</body>
</html>

运行效果:

下图为 子页面 负责监听接受消息

相关推荐
kyriewen3 小时前
我让AI改一个bug——它偷偷动了5个我没让它碰的地方
前端·javascript·ai编程
gis开发之家7 小时前
《Vue3 从入门到大神35篇》Vue3 源码详解(五):effect 依赖收集原理——track 与 trigger 是如何工作的?
javascript·typescript·前端框架·vue3·vue3源码
橘子星8 小时前
我一个前端切图仔,凭什么能在浏览器里跑大模型?
前端·javascript·前端框架
半个落月8 小时前
用 LangChain JS 做可控写作实验:理解温度参数、提示词与异步调用
javascript·人工智能·后端
观远数据8 小时前
Excel到数据资产池:文件数据入湖的治理规范怎么建
前端·javascript·excel
CoderWeen8 小时前
我写了个能一步步点着看的 Dijkstra 可视化项目(Vue3 + Leaflet + Generator)
前端·javascript·vue.js
爱分享的程序猿-Clark9 小时前
【前端分享】vue开发项目,如何实现 从A页面跳转到B页面,并传值!
前端·javascript·vue.js
冰暮流星9 小时前
javascript之String方法介绍
开发语言·javascript·ecmascript
Hilaku10 小时前
2026 年前端大洗牌:React 服务端到 Vite 的底层重构
前端·javascript·程序员