wujingjing
2025-03-25 1dc23676bbf70fa2b97a9e0e9034c78e066111a0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
 * 设置全局函数,用于 Child 注册
 */
export const registerChildFunction = () => {
    /** @description 把 Child 的函数注册过来, 方便自己调用 */
    (window as any).register = (funObj: any) => {
        console.log('register children function obj', funObj);
        (window as any).childCallObj = funObj;
    };
};
 
/**
 * 返回子 iframe 调用功能列表
 */
export const getChildCallObj = () => {
    return (window as any)?.childCallObj ?? {};
};
 
/**
 * 返回一个对象,给 child 调用
 * 此对象包含多个函数
 * @returns
 */
const parentCallObj = {
    /** @description 测试函数 */
    test: (msg: string) => {
        console.log('test 函数来自 parent', msg);
    },
};
/**
 * 往 windows 上加函数,给 child 调用
 */
export const setParentFunction = () => {
    let child: any;
    for (let index = 0; index < window.frames.length; index++) {
        const frame = window.frames[index];
        if ((frame as any).register) {
            child = frame;
            break;
        }
    }
    if (!child) return;
 
    child.register?.(parentCallObj);
};