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>

运行效果:

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

相关推荐
平凡的阿泽10 分钟前
我用TRAE Work手搓了一个「谁是卧底」小游戏
前端·javascript
Highcharts12 分钟前
Highcharts 实战:基于 Gauge 仪表盘打造实时动态时钟可视化开发全解析
javascript·数据可视化
嘟嘟071721 分钟前
用单例模式管理弹窗:从一段原生 JS 理解 Singlet
前端·javascript·代码规范
广东程序猿小展24 分钟前
《007初露锋芒》风灵月影13项修改器下载 007初露锋芒修改器使用方法
开发语言·javascript·ecmascript
用户69190268133938 分钟前
Harness工程的概念,以及简单的代码示例
javascript·架构
AI_paid_community1 小时前
如何使用 Claude 在 AI 时代快速入局新的行业?(经验贴)
前端·javascript·后端
sunly_1 小时前
React Suspense 用法详解
前端·javascript·react.js
渣波1 小时前
TS 必考题深度解析:type 与 interface 的终极对决
前端·javascript
必须会一定会3 小时前
用纯 HTML/JS 做一个 AI 需求澄清器:把模糊想法转换成可执行任务书
开发语言·前端·javascript·人工智能·html·ai编程
小帅不太帅3 小时前
1.5M 参数的 OCR 模型,我把它跑进了浏览器
前端·javascript·ai编程