当前位置: 首页> 文旅> 美景 > 青岛正规品牌网站制作策划_网站建设明细报价单_整站优化外包服务_网站打开

青岛正规品牌网站制作策划_网站建设明细报价单_整站优化外包服务_网站打开

时间:2025/8/23 22:13:02来源:https://blog.csdn.net/qq_37309987/article/details/147136719 浏览次数:0次
青岛正规品牌网站制作策划_网站建设明细报价单_整站优化外包服务_网站打开

背景:前端项目采用 qiankun 框架开发,主应用使用 vue2 ,子应用使用 react16+umi。项目部署时使用 nginx, 部署在同一台服务器上,主项目部署在一级目录,子项目部署在二级目录。其中主应用的有一个需求是,将各个子系统的日志功能集中到主应用统一管理。而针对于某一个子应用,有一个特殊处理的功能,根据主应用中的日志记录,可以查看子应用中的业务流转记录。基于这种场景,使用到了 iframe 加载子应用。

遇到的问题:

一、本地开发时,主应用使用 iframe 无法加载子应用页面。

解决方案一:部署到服务器上。

二、部署到服务器时,nginx 缺少配置导致无法加载同源页面。

报错信息:

“Refused to display 'http://localhost:8088/' in a frame because it set 'X-Frame-Options' to 'deny'” 

修改配置:

location / {add_header X-Frame-Options SAMEORIGIN;
}

三、主应用中加载的子应用页面,包含了主应用的公共导航、菜单、底部结构。

加载 iframe 页面后的通信:

主应用:

export default {mounted(){window.addEventListener('message',this.handleMessage);},beforeDestory(){window.addEventListener('message',this.handleMessage);},methods:{handleMessage(event){const {action,status} = event.data;if(action == 'subappRendered' && status == 'success'){const iframeDom = document.querySelector('#iframe').contentDocument;const openSidebarDom = iframeDom.querySelector('.el-header');const elHeaderDom = iframeDom.querySelector('el-footer');elHeaderDom && openSidebarDom.removeChild(elHeaderDom);elFooterDom && openSiderbardom.removeChild(elFooterDom);const elContainerDom = iframeDom.querySelector('.el-container');const elAsideDom = iframeDom.querySelector('.el-aside');elAsideDom && elContainerDom.removeChild(elAsideDom);const footerDom = iframeDom = iframeDom.querySelector('.footerClass');footerDom.style.display = 'none';}},}}

 子应用:

export default {mounted (){window.parent.postMessage({action: 'subappRendered',status: 'success'},'*');}
}

 

关键字:青岛正规品牌网站制作策划_网站建设明细报价单_整站优化外包服务_网站打开

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: