From b8bf4401bb6cedb2355925a15a8d14592766790a Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 20 Mar 2025 18:57:40 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/14373 --- app/src/plugin/loader.ts | 17 +++++++++++------ app/src/plugin/uninstall.ts | 2 ++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/plugin/loader.ts b/app/src/plugin/loader.ts index 3ff090a5c..b0ac6ab2f 100644 --- a/app/src/plugin/loader.ts +++ b/app/src/plugin/loader.ts @@ -29,19 +29,21 @@ const runCode = (code: string, sourceURL: string) => { export const loadPlugins = async (app: App, names?: string[]) => { const response = await fetchSyncPost("/api/petal/loadPetals", {frontend: getFrontend()}); - let css = ""; + let css = ''; // 用于将内联样式插入到插件样式前的标识 // 为加快启动速度,不进行 await response.data.forEach((item: IPluginData) => { if (!names || (names && names.includes(item.name))) { loadPluginJS(app, item); } - css += item.css || "" + "\n"; + if (item.css) { + css += ``; + } }); const pluginsStyle = document.getElementById("pluginsStyle"); if (pluginsStyle) { pluginsStyle.innerHTML = css; } else { - document.head.insertAdjacentHTML("beforeend", ``); + document.head.insertAdjacentHTML("beforeend", css); } }; @@ -81,9 +83,12 @@ const loadPluginJS = async (app: App, item: IPluginData) => { // 启用插件 export const loadPlugin = async (app: App, item: IPluginData) => { const plugin = await loadPluginJS(app, item); - const styleElement = document.createElement("style"); - styleElement.textContent = item.css; - document.head.append(styleElement); + if (item.css) { + const styleElement = document.createElement("style"); + styleElement.id = "pluginsStyle" + item.name; + styleElement.textContent = item.css; + document.head.append(styleElement); + } afterLoadPlugin(plugin); saveLayout(); getAllEditor().forEach(editor => { diff --git a/app/src/plugin/uninstall.ts b/app/src/plugin/uninstall.ts index 71b558f11..7fba77cf3 100644 --- a/app/src/plugin/uninstall.ts +++ b/app/src/plugin/uninstall.ts @@ -66,6 +66,8 @@ export const uninstall = (app: App, name: string, isUninstall = false) => { getAllEditor().forEach(editor => { editor.protyle.toolbar.update(editor.protyle); }); + // rm style + document.getElementById("pluginsStyle" + name)?.remove(); return true; } });