( messageFlag: string, onReady: (eventFlag: string, extensionEnv: TExtensionEnv | undefined) => void )
| 58 | |
| 59 | // 获取协商后的 eventFlag |
| 60 | export function getEventFlag( |
| 61 | messageFlag: string, |
| 62 | onReady: (eventFlag: string, extensionEnv: TExtensionEnv | undefined) => void |
| 63 | ) { |
| 64 | let eventFlag = ""; |
| 65 | let extensionEnv: TExtensionEnv | undefined = undefined; |
| 66 | const fnEventFlagListener: EventListener = (ev: Event) => { |
| 67 | if (!(ev instanceof CustomEvent)) return; |
| 68 | if (ev.detail?.action != "broadcastEventFlag") return; |
| 69 | eventFlag = ev.detail.eventFlag; |
| 70 | extensionEnv = ev.detail.extensionEnv; |
| 71 | pageRemoveEventListener(messageFlag, fnEventFlagListener); |
| 72 | // 告知对方已收到 eventFlag |
| 73 | pageDispatchCustomEvent(messageFlag, { action: "receivedEventFlag" }); |
| 74 | onReady(eventFlag, extensionEnv); |
| 75 | }; |
| 76 | |
| 77 | // 设置事件,然后对 scripting 请求 flag |
| 78 | pageAddEventListener(messageFlag, fnEventFlagListener); |
| 79 | pageDispatchCustomEvent(messageFlag, { action: "requestEventFlag" }); |
| 80 | } |
| 81 | |
| 82 | export const createMouseEvent = |
| 83 | process.env.VI_TESTING === "true" |
no test coverage detected