🎨 Improve theme switching (#15054)

This commit is contained in:
Jeffrey Chen 2025-07-10 20:06:59 +08:00 committed by GitHub
parent e0fe3361d2
commit b70e06e72f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -28,7 +28,19 @@ export const loadAssets = (data: Config.IAppearance) => {
const defaultThemeAddress = `/appearance/themes/${data.mode === 1 ? "midnight" : "daylight"}/theme.css?v=${Constants.SIYUAN_VERSION}`;
if (defaultStyleElement) {
if (!defaultStyleElement.getAttribute("href").startsWith(defaultThemeAddress)) {
defaultStyleElement.setAttribute("href", defaultThemeAddress);
const newStyleElement = document.createElement("link");
newStyleElement.id = "themeDefaultStyleNew";
newStyleElement.rel = "stylesheet";
newStyleElement.href = defaultThemeAddress;
// 等待新样式表加载完成再移除旧样式表
new Promise((resolve) => {
newStyleElement.onload = resolve;
defaultStyleElement.parentNode.insertBefore(newStyleElement, defaultStyleElement);
}).then(() => {
defaultStyleElement.remove();
newStyleElement.id = "themeDefaultStyle";
});
}
} else {
addStyle(defaultThemeAddress, "themeDefaultStyle");