From 436135492b7b68e04d2b6003d531493f8a2a7323 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Mon, 7 Jul 2025 17:34:42 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/14167#issuecomment-2676775230 --- app/src/util/assets.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/app/src/util/assets.ts b/app/src/util/assets.ts index ee0ec4b84..8ee42ffb4 100644 --- a/app/src/util/assets.ts +++ b/app/src/util/assets.ts @@ -88,15 +88,22 @@ export const loadAssets = (data: Config.IAppearance) => { // load icons const isBuiltInIcon = ["ant", "material"].includes(data.icon); + const iconScriptElement = document.getElementById("iconScript"); + const iconDefaultScriptElement = document.getElementById("iconDefaultScript"); + // 不能使用 data.iconVer,因为其他主题也需要加载默认图标,此时 data.iconVer 为其他图标的版本号 + const iconDefaultURL = `/appearance/icons/${isBuiltInIcon ? data.icon : "material"}/icon.js?v=${Constants.SIYUAN_VERSION}`; + const iconThirdURL = `/appearance/icons/${data.icon}/icon.js?v=${data.iconVer}`; + + if ((isBuiltInIcon && iconDefaultScriptElement && iconDefaultScriptElement.getAttribute("src").startsWith(iconDefaultURL)) || + (!isBuiltInIcon && iconScriptElement && iconScriptElement.getAttribute("src").startsWith(iconThirdURL))) { + return; + } Array.from(document.body.children).forEach(item => { if (item.tagName === "svg" && !item.getAttribute("data-name") && item.id !== "iconsMaterial") { item.remove(); } }); - const iconDefaultScriptElement = document.getElementById("iconDefaultScript"); - // 不能使用 data.iconVer,因为其他主题也需要加载默认图标,此时 data.iconVer 为其他图标的版本号 - const iconURL = `/appearance/icons/${isBuiltInIcon ? data.icon : "material"}/icon.js?v=${Constants.SIYUAN_VERSION}`; - if (iconDefaultScriptElement && !iconDefaultScriptElement.getAttribute("src").startsWith(iconURL)) { + if (iconDefaultScriptElement && !iconDefaultScriptElement.getAttribute("src").startsWith(iconDefaultURL)) { iconDefaultScriptElement.remove(); if (data.icon === "ant") { document.querySelectorAll("#iconsMaterial").forEach(item => { @@ -104,10 +111,10 @@ export const loadAssets = (data: Config.IAppearance) => { }); } } - addScript(iconURL, "iconDefaultScript").then(() => { + addScript(iconDefaultURL, "iconDefaultScript").then(() => { if (!isBuiltInIcon) { - document.getElementById("iconScript")?.remove(); - addScript(`/appearance/icons/${data.icon}/icon.js?v=${data.iconVer}`, "iconScript"); + iconScriptElement?.remove(); + addScript(iconThirdURL, "iconScript"); } }); };