From 45c84265ea81412a303254d91cce177bd596ef00 Mon Sep 17 00:00:00 2001 From: Huangzhe Date: Wed, 7 May 2025 16:46:46 +0800 Subject: [PATCH] =?UTF-8?q?feat(iframe):=20=E5=AE=9E=E7=8E=B0=E7=9F=A5?= =?UTF-8?q?=E8=AF=86=E5=BA=93=E5=BA=94=E7=94=A8=E7=9A=84=20iframe=20?= =?UTF-8?q?=E9=80=9A=E4=BF=A1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 优化 message-channel.js 实现父子页面间的通信机制 - 更新配置文件,添加杭州环境地址配置 - 更新依赖包配置,新增 markdown-it 和 markdown-it-katex 支持 - 实现基于 MessageChannel API 的跨域通信 - 添加布局控制功能,支持在 iframe 中隐藏/显示界面元素 --- public/js/message-channel.js | 35 ++++++++++++++++++++++++----------- src/config/index.js | 8 +++++--- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/public/js/message-channel.js b/public/js/message-channel.js index 60acebc..c27c5d9 100644 --- a/public/js/message-channel.js +++ b/public/js/message-channel.js @@ -1,29 +1,42 @@ // 保存端口引用 let port +/** + * 控制处理各种消息 + * @type {Map } + */ +const handle = new Map() + +handle.set('layout', false) /** * 接收来自主页面的初始化消息 * @param e {MessageEvent} */ self.onmessage = function initHandler(e) { - const { ports = [], data } = e - - console.log(`Worker收到消息:`, data) - + const {ports = [], data} = e + // console.log(`Worker收到消息:`, data) // 只处理初始化消息 if (data !== 'init-worker' || ports.length === 0) { return } - console.log(`Worker初始化,接收到端口:`, ports[0]) - port = ports[0] + // console.log(`Worker初始化,接收到端口:`, ports[0]) + self.port = ports[0] - // 设置定时器发送消息 - setTimeout(() => { - console.log(`定时器触发,开始发送消息`) - port.postMessage('init-worker-success') - }, 4000) + self.port.onmessage = messageHandler // 初始化完成后,可以移除主消息监听器,改为只监听端口消息 self.onmessage = null } + +/** + * 父节点事件配置 + * @param event {MessageEvent} + */ +function messageHandler(event) { + // console.log('has been received event',event) + + if (handle.has(event.data.type)){ + self.port.postMessage(handle.get(event.data.type)) + } +} diff --git a/src/config/index.js b/src/config/index.js index e1feb6e..68972df 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -1,13 +1,15 @@ let envInfo = process.env -let [admin, jifen, zixi] = [ +let [admin, jifen, zixi, hz] = [ envInfo.VUE_APP_ADMIN, 'http://192.168.2.62:7196/', - 'http://192.168.8.165:7196/' + 'http://192.168.8.165:7196/', + 'http://10.147.17.161:7196/' ] //let [admin, jifen, zixi] = ['/api', 'http://192.168.2.62:7196/', '/jifen'] export default { admin, jifen, - zixi + zixi, + hz }