// 发送一条消息(二次封装类型) export const postPageMessage = (data: PageMessage.Messages) => { return window.postMessage(data); }; // 接收一条消息 export const receivePageMessage = ( fn: (data: PageMessage.Messages) => void, eventName?: PageMessage.Messages["type"] ) => { const eventFn = (ev: MessageEvent) => { if (!ev.data) { return; } if (eventName && ev.data.type === eventName) { fn(ev.data); } else if (!eventName && ev.data.type?.includes("toolbox::")) { fn(ev.data); } }; window.addEventListener("message", eventFn); return () => { window.removeEventListener("message", eventFn); }; }; // 等待一条消息的推送 export const waitPageMessage = (eventName: PageMessage.Messages["type"]) => { return new Promise((resolve) => { const eventFn = (ev: MessageEvent) => { if (!ev.data) { return; } if (eventName && ev.data.type === eventName) { window.removeEventListener("message", eventFn); resolve(ev.data); } }; window.addEventListener("message", eventFn); }); };