From aafc19ae120ee1313f418b392dc3f3e4660fafcc Mon Sep 17 00:00:00 2001 From: hehh Date: Tue, 25 Nov 2025 10:11:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(about):=20=E9=87=8D=E6=9E=84=20Artalk=20?= =?UTF-8?q?=E8=AF=84=E8=AE=BA=E7=BB=84=E4=BB=B6=E5=8A=A0=E8=BD=BD=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 reloadArtalk 方法用于完全重载评论组件 - 在主题变更时重新加载整个评论组件而非仅更新主题 - 在语言切换时重新加载整个评论组件而非仅更新语言 - 移除旧的 updateArtalkLanguage 和 setDarkMode 调用逻辑 - 确保组件销毁和容器清空后再进行重新初始化 --- js/about.js | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/js/about.js b/js/about.js index e090405..1513cc5 100644 --- a/js/about.js +++ b/js/about.js @@ -535,6 +535,23 @@ class UIManager { } } + // 重新加载 Artalk 评论组件 + reloadArtalk() { + // 销毁现有的 Artalk 实例 + if (typeof Artalk !== 'undefined' && Artalk.instances) { + Artalk.destroy(); + } + + // 清空容器 + const container = document.getElementById('artalk-container'); + if (container) { + container.innerHTML = ''; + } + + // 重新初始化 + this.initArtalk(); + } + enhanceArtalkUI() { const container = document.getElementById('artalk-container'); if (!container) return; @@ -567,16 +584,10 @@ class UIManager { // 监听主题变化 const themeObserver = new MutationObserver(() => { const newTheme = document.documentElement.getAttribute('data-theme'); - if (typeof Artalk !== 'undefined') { - try { - Artalk.setDarkMode(newTheme === 'night'); - } catch (e) { - console.warn('Failed to update Artalk dark mode:', e); - } + if (newTheme !== currentTheme) { + // 重新加载整个评论组件而不是仅仅设置主题 + this.reloadArtalk(); } - - // 更新自定义样式类 - this.updateCustomStyles(container, newTheme); }); themeObserver.observe(document.documentElement, { @@ -590,8 +601,8 @@ class UIManager { langBtn.addEventListener('click', () => { // 延迟执行以确保语言已经切换 setTimeout(() => { - const newLang = getStoredLanguage(); - this.updateArtalkLanguage(container, newLang, isMobile); + // 重新加载整个评论组件而不是仅仅更新语言 + this.reloadArtalk(); }, 100); }); }