VUE 使用postMessage数据传递

场景假设:从当前页面A打开B页面,B页面操作数据后需要触发A页面的接口更新显示。

1、A页面操作 (接收数据触发事件方)

window.addEventListener('message', (e) => { console.log(e.data) }, false)  // mounted

methods: {
	toBHtml() { // 点击跳转到B页面 触发一次消息通知B页面来源方***
		const OtherWindow = window.open('http://xxx.com/x.html')
		setTimeout(_ => {
			OtherWindow.postMessage('formA', 'http://xxx.com/x.html')
		}, 3000) // 处理异步
	}
}

2、B页面操作(派发数据方)

data: () => ({
	postMessageObj: null
}),
mounted() {
	window.addEventListener('message', (e) => { this.postMessageObj = e }, false) // e: { data: 'formA', ... }
},
methods: {
	onClickSave() {
		this.postMessageObj.source.postMessage('fromB', 'http://xxx.com/A.html')
	}
}

###A页面点击打开新窗口B ,新窗口B操作后触发onClickSave事件,这时A页面的message监听会获取到formB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值