diff --git a/examples/main-react/src/index.css b/examples/main-react/src/index.css index 57050624..541f4c64 100644 --- a/examples/main-react/src/index.css +++ b/examples/main-react/src/index.css @@ -94,7 +94,6 @@ h3 { height: 100vh; overflow: hidden scroll; width: 1px; - z-index: 2; } .nav a { diff --git a/examples/main-vue/src/App.vue b/examples/main-vue/src/App.vue index a7a2c100..7e4d8398 100644 --- a/examples/main-vue/src/App.vue +++ b/examples/main-vue/src/App.vue @@ -191,7 +191,6 @@ h3 { height: 100vh; overflow: hidden scroll; width: 1px; - z-index: 2; } #nav a { diff --git a/packages/wujie-core/src/constant.ts b/packages/wujie-core/src/constant.ts index 56c4fb57..16120d4b 100644 --- a/packages/wujie-core/src/constant.ts +++ b/packages/wujie-core/src/constant.ts @@ -34,6 +34,7 @@ export const WUJIE_LOADING_SVG = ` & * 上述条件同时成立说明主应用代码在iframe的loading阶段混入进来了,必须中断执行 */ if (window.__WUJIE && !window.__POWERED_BY_WUJIE__) { - warn(WUJIE_TIPS_STOP_APP); - throw new Error(WUJIE_TIPS_STOP_APP); + stopMainAppRun(); } // 处理子应用链接跳转 diff --git a/packages/wujie-core/src/proxy.ts b/packages/wujie-core/src/proxy.ts index a48c53a1..4750dc4e 100644 --- a/packages/wujie-core/src/proxy.ts +++ b/packages/wujie-core/src/proxy.ts @@ -10,6 +10,7 @@ import { isCallable, checkProxyFunction, warn, + stopMainAppRun, } from "./utils"; /** @@ -80,6 +81,8 @@ export function proxyGenerator( get: function (_fakeDocument, propKey) { const document = window.document; const { shadowRoot, proxyLocation } = iframe.contentWindow.__WUJIE; + // iframe初始化完成后,webcomponent还未挂在上去,此时运行了主应用代码,必须中止 + if (!shadowRoot) stopMainAppRun(); const rawCreateElement = iframe.contentWindow.__WUJIE_RAW_DOCUMENT_CREATE_ELEMENT__; const rawCreateTextNode = iframe.contentWindow.__WUJIE_RAW_DOCUMENT_CREATE_TEXT_NODE__; // need fix diff --git a/packages/wujie-core/src/utils.ts b/packages/wujie-core/src/utils.ts index 50bff72b..321fab6f 100644 --- a/packages/wujie-core/src/utils.ts +++ b/packages/wujie-core/src/utils.ts @@ -1,4 +1,10 @@ -import { WUJIE_SCRIPT_ID, WUJIE_TIPS_NO_URL, WUJIE_APP_ID } from "./constant"; +import { + WUJIE_SCRIPT_ID, + WUJIE_TIPS_NO_URL, + WUJIE_APP_ID, + WUJIE_TIPS_STOP_APP, + WUJIE_TIPS_STOP_APP_DETAIL, +} from "./constant"; import { plugin, cacheOptions } from "./index"; export function toArray(array: T | T[]): T[] { @@ -353,3 +359,8 @@ export function eventTrigger(el: HTMLElement | Window | Document, eventName: str } el.dispatchEvent(event); } + +export function stopMainAppRun() { + warn(WUJIE_TIPS_STOP_APP_DETAIL); + throw new Error(WUJIE_TIPS_STOP_APP); +}