tanghaolin
2025-04-20 fe4b76e24c82abf35afaaa07f3e681ba14ee2d80
src/utils/iframeCall.ts
@@ -1,31 +1,17 @@
/**
 * 设置全局函数,用于 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;
         }
      }
   }
}