From c96e0bdfa3168b5e83b95cce30031836add50280 Mon Sep 17 00:00:00 2001 From: nanhaoluo <3075912108@qq.com> Date: Fri, 23 Jan 2026 19:15:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BD=BF=E7=94=A8=E9=80=92=E5=BD=92?= =?UTF-8?q?=E6=96=87=E6=9C=AC=E8=8A=82=E7=82=B9=E6=8F=90=E5=8F=96=E4=BF=9D?= =?UTF-8?q?=E7=95=99=E6=8D=A2=E8=A1=8C=E7=AC=A6=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20getTextWithLineBreaks=20=E5=87=BD=E6=95=B0=E9=80=92=E5=BD=92?= =?UTF-8?q?=E6=8F=90=E5=8F=96=E6=96=87=E6=9C=AC=E8=8A=82=E7=82=B9=20-=20?= =?UTF-8?q?=E5=A4=84=E7=90=86=20BR=20=E6=A0=87=E7=AD=BE=E4=B8=BA=E6=8D=A2?= =?UTF-8?q?=E8=A1=8C=E7=AC=A6=20-=20=E6=B7=BB=E5=8A=A0=E6=8D=A2=E8=A1=8C?= =?UTF-8?q?=E7=AC=A6=E6=A3=80=E6=B5=8B=E6=97=A5=E5=BF=97=20-=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=94=99=E8=AF=AF=E6=8D=95=E8=8E=B7=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E6=B8=B2=E6=9F=93=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- footer.php | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/footer.php b/footer.php index f2ac2cb..f6278b7 100644 --- a/footer.php +++ b/footer.php @@ -187,6 +187,38 @@ }); + // 递归获取所有文本节点,保留换行符 + + function getTextWithLineBreaks(element) { + + let text = ''; + + for (let node of element.childNodes) { + + if (node.nodeType === Node.TEXT_NODE) { + + text += node.textContent; + + } else if (node.nodeType === Node.ELEMENT_NODE) { + + if (node.tagName === 'BR') { + + text += '\n'; + + } else { + + text += getTextWithLineBreaks(node); + + } + + } + + } + + return text; + + } + // 自动渲染所有 mermaid 代码块 document.querySelectorAll('pre code.language-mermaid, pre code.mermaid').forEach(function(element) { @@ -203,15 +235,15 @@ let pre = element.parentElement; - // 获取代码内容 + // 获取代码内容,保留换行符 - let code = element.textContent || element.innerText; + let code = getTextWithLineBreaks(element); // 去除首尾空白 code = code.trim(); - // 验证是否为有效的 Mermaid 代码(必须以 graph/flowchart/sequenceDiagram 等关键字开头) + // 验证是否为有效的 Mermaid 代码 let validKeywords = ['graph', 'flowchart', 'sequenceDiagram', 'classDiagram', 'stateDiagram', 'erDiagram', 'journey', 'gantt', 'pie', 'gitGraph', 'mindmap', 'timeline', 'quadrantChart']; @@ -233,10 +265,18 @@ if (!isValid) { + console.log('Skipping invalid Mermaid code:', code.substring(0, 50)); + return; } + // 调试:输出代码内容和换行符 + + console.log('Mermaid code found (length: ' + code.length + '):', code); + + console.log('Contains newlines:', code.indexOf('\n') !== -1); + // 创建 Mermaid 容器 let mermaidDiv = document.createElement('div'); @@ -259,13 +299,23 @@ if (mermaidElements.length > 0) { + console.log('Rendering', mermaidElements.length, 'Mermaid diagrams'); + mermaidElements.forEach(function(el) { el.classList.add('mermaid-rendered'); }); - mermaid.init(undefined, mermaidElements); + try { + + mermaid.init(undefined, mermaidElements); + + } catch (e) { + + console.error('Mermaid rendering error:', e); + + } }