| | |
| | | /** |
| | | * 设置全局函数,用于 Child 注册 |
| | | */ |
| | | export const registerChildFunction = () => { |
| | | /** @description 把 Child 的函数注册过来, 方便自己调用 */ |
| | | (window as any).register = (cb: (...args: any[]) => void) => { |
| | | console.log('register children function'); |
| | | (window as any).childCall = (...args: any[]) => { |
| | | cb(...args); |
| | | }; |
| | | }; |
| | | }; |
| | | |
| | | /** |
| | | * 往 windows 上加函数,给 child 调用 |
| | | */ |
| | | export const setParentFunction = () => { |
| | | const child = window.frames[0]; |
| | | if (!child) return; |
| | | const fun = (msg: string) => { |
| | | console.log('函数来自parent', msg); |
| | | }; |
| | | (child as any).register?.(fun); |
| | | const notifyFunc = (jsonObj: any) => { |
| | | console.log('message from parent🚀 ~ jsonObj:', jsonObj); |
| | | // 执行AI通知消息 |
| | | }; |
| | | |
| | | /** |
| | | * 子 iframe 调用 |
| | | */ |
| | | export const childCall = (...args: any[]) => { |
| | | (window.frames[0] as any)?.childCall?.(...args); |
| | | }; |
| | | export class ChildRegister { |
| | | static childCallObj = null; |
| | | static registerNotifyFunction() { |
| | | for (let index = 0; index < window.frames.length; index++) { |
| | | const frame = window.frames[index]; |
| | | if ((frame as any).registerNotifyFunction) { |
| | | ChildRegister.childCallObj = (frame as any).registerNotifyFunction(notifyFunc); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |