diff --git a/.kiro/specs/mermaid-support/tasks.md b/.kiro/specs/mermaid-support/tasks.md index e29de01..b2b900a 100644 --- a/.kiro/specs/mermaid-support/tasks.md +++ b/.kiro/specs/mermaid-support/tasks.md @@ -150,7 +150,7 @@ - **Validates: Requirements 9.4** - _Requirements: 9.4_ -- [~] 10. 添加性能优化 +- [x] 10. 添加性能优化 - 实现渲染缓存机制(避免重复渲染) - 优化批量渲染逻辑 - 添加渲染状态标记 @@ -161,7 +161,7 @@ - **Validates: Requirements 8.3** - _Requirements: 8.3_ -- [~] 11. 添加特殊格式处理 +- [x] 11. 添加特殊格式处理 - 处理 WP-Markdown 生成的 `` 格式 - 实现转义字符解码(`\n`, `\"`, `\'`) - 添加注释代码块过滤 diff --git a/argontheme.js b/argontheme.js index c09a59e..5373a32 100644 --- a/argontheme.js +++ b/argontheme.js @@ -4470,7 +4470,22 @@ void 0; // 根据不同的元素类型提取代码 if (element.tagName === 'DIV' && element.classList.contains('mermaid')) { - code = element.textContent; + // 检查是否包含 WP-Markdown 生成的 script 标签 + const scriptTag = element.querySelector('script'); + if (scriptTag) { + // 提取 document.write() 中的内容 + const scriptContent = scriptTag.textContent || scriptTag.innerText; + const match = scriptContent.match(/document\.write\s*\(\s*["'](.+?)["']\s*\)/); + if (match && match[1]) { + code = match[1]; + this.logDebug('检测到 WP-Markdown 格式,从 script 标签提取代码'); + } else { + // 如果没有匹配到,使用整个元素的文本内容(排除 script 标签) + code = element.textContent; + } + } else { + code = element.textContent; + } } else if (element.tagName === 'CODE') { code = element.textContent; } else if (element.tagName === 'PRE') { diff --git a/tests/test-wp-markdown-format.html b/tests/test-wp-markdown-format.html new file mode 100644 index 0000000..94c9321 --- /dev/null +++ b/tests/test-wp-markdown-format.html @@ -0,0 +1,333 @@ + + +
+ + +测试 Mermaid 对 WP-Markdown 编辑器生成的特殊格式的支持
+ + +