Files
ebiz-ai-knowledge-manage/public/js/message-channel.js
Huangzhe 45c84265ea feat(iframe): 实现知识库应用的 iframe 通信功能
- 优化 message-channel.js 实现父子页面间的通信机制
- 更新配置文件,添加杭州环境地址配置
- 更新依赖包配置,新增 markdown-it 和 markdown-it-katex 支持
- 实现基于 MessageChannel API 的跨域通信
- 添加布局控制功能,支持在 iframe 中隐藏/显示界面元素
2025-05-07 16:49:51 +08:00

43 lines
941 B
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 保存端口引用
let port
/**
* 控制处理各种消息
* @type {Map <string, boolean>}
*/
const handle = new Map()
handle.set('layout', false)
/**
* 接收来自主页面的初始化消息
* @param e {MessageEvent}
*/
self.onmessage = function initHandler(e) {
const {ports = [], data} = e
// console.log(`Worker收到消息:`, data)
// 只处理初始化消息
if (data !== 'init-worker' || ports.length === 0) {
return
}
// console.log(`Worker初始化接收到端口:`, ports[0])
self.port = ports[0]
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))
}
}