diff --git a/core/core-frontend/src/pages/panel/main.ts b/core/core-frontend/src/pages/panel/main.ts index d6b195f782..d8f20fa488 100644 --- a/core/core-frontend/src/pages/panel/main.ts +++ b/core/core-frontend/src/pages/panel/main.ts @@ -1,7 +1,5 @@ const suffix = `${import.meta.env.VITE_VERSION}-dataease` -const dom = document.querySelector('head') - const formatterUrl = (node: T, prefix: string) => { if (['SCRIPT', 'LINK'].includes(node.nodeName)) { let url = '' @@ -13,7 +11,7 @@ const formatterUrl = (node: T, prefix: string) => { if (url.includes(suffix) || url.includes('dataease-private')) { const currentUrlprefix = new URL(url).origin - const newUrl = url.replace(currentUrlprefix, prefix) + const newUrl = url.startsWith(prefix) ? url : url.replace(currentUrlprefix, prefix) if (node instanceof HTMLLinkElement) { node.href = newUrl } else if (node instanceof HTMLScriptElement) { @@ -48,14 +46,19 @@ const getPrefix = (): string => { } const element = document.createElement('head') document.body.appendChild(element) -document.querySelector('head').appendChild = (node: T) => { +const dom = document.querySelector('head') +dom.appendChild = (node: T) => { const newNode = formatterUrl(node, getPrefix()) element.appendChild(newNode) return newNode } - -document.querySelector('head').removeChild = (node: T) => { - element.removeChild(node) +const rmc = dom.removeChild +dom.removeChild = (node: T) => { + if (element.contains(node)) { + element.removeChild(node) + } else { + rmc.bind(dom, node) + } return node } import { App, createApp } from 'vue'