diff --git a/.kiro/specs/mermaid-codeblock-magic/tasks.md b/.kiro/specs/mermaid-codeblock-magic/tasks.md index 0ecb178..8cfbb4b 100644 --- a/.kiro/specs/mermaid-codeblock-magic/tasks.md +++ b/.kiro/specs/mermaid-codeblock-magic/tasks.md @@ -16,8 +16,8 @@ - [ ] 1. 修复 PJAX 页面切换后 Mermaid 不渲染的问题 - [x] 1.1 实现 Mermaid 代码块检测函数 _需求:3.1-3.5_ - - [~] 1.2 优化 PJAX complete 事件处理 _需求:1.1-1.5_ - - [~] 1.3 添加渲染状态标记,避免重复渲染 _需求:3.5_ + - [x] 1.2 优化 PJAX complete 事件处理 _需求:1.1-1.5_ + - [x] 1.3 添加渲染状态标记,避免重复渲染 _需求:3.5_ - [~] 1.4 测试 PJAX 跳转后的渲染效果 _需求:1.1-1.5_ - [ ] 2. 修复 Mermaid 语法解析错误 diff --git a/argontheme.js b/argontheme.js index 0fc39d8..0bc477f 100644 --- a/argontheme.js +++ b/argontheme.js @@ -5433,6 +5433,9 @@ void 0; // 保存原始代码(用于主题切换时重新渲染) container.dataset.mermaidCode = code; container.dataset.currentTheme = this.getMermaidTheme(); + + // 需求 3.5: 添加渲染状态标记,避免重复渲染 + container.setAttribute('data-mermaid-rendered', 'true'); // 替换加载动画为渲染结果 if (loadingContainer.parentNode) { @@ -5483,6 +5486,10 @@ void 0; container.innerHTML = svgCode; container.dataset.mermaidCode = code; container.dataset.currentTheme = this.getMermaidTheme(); + + // 需求 3.5: 添加渲染状态标记,避免重复渲染 + container.setAttribute('data-mermaid-rendered', 'true'); + element.parentNode.replaceChild(container, element); this.rendered.add(container); this.applyStyles(container); @@ -5497,6 +5504,10 @@ void 0; if (typeof window.mermaid.init === 'function') { window.mermaid.init(undefined, container); this.rendered.add(container); + + // 需求 3.5: 添加渲染状态标记,避免重复渲染 + container.setAttribute('data-mermaid-rendered', 'true'); + this.logDebug(`图表渲染成功(init 方法): ${chartId}`); } else { this.handleRenderError(element, new Error('无可用的 Mermaid 渲染方法'), code);