需求描述:在后台管理系统中需要预览配置的数据在手机上显示的样式,方便后台管理人员操作,因为预览的内容比较多,h5已经写好了一套代码,所以利用iframe将h5的页面展示引入到后台
代码展示:
iframe:
<iframe
id="iframe"
ref="iframe"
frameborder="0"
class="iframe"
:src="srcH5" //srcH5:预览页面的地址
/>
srcH5:'/iframeH5/preview',
父页面给子页面传值:
var iframe = document.getElementById('iframe');
var msg = {name:'张三'}
var childDomain = 'http://localhost:80/' //预览页面的域名
iframe.contentWindow.postMessage(msg, childDomain);
子页面给父页面传值:在mounted中调用,避免未渲染完成,无法拿到数据
//拿到父页面传递的值
window.addEventListener('message', (obj) => {
this.obj = obj.data;
console.log('拿到数据了吗', this.obj );
}, false);
//将预览成功的信息返回给父页面
window.parent.postMessage({
data: {
code:'success'
}
}, '*');
父页面监听子页面返回的成功信息,做进一步操作
window.addEventListener('message', this.handleMessage);
// 监听h5页面的通信
handleMessage (event) {
const data = event.data.data;
if(data && data.code === 'success') {
。。。。。。
}
},