]> acesimba.cloud Git - StationBuilder.git/commitdiff
fix: Markdown 导出时转义表格单元格 HTML 尖括号,兼容 Azure DevOps Wiki
authorwang.yu <wang.yu@advantech.com>
Tue, 18 Aug 2026 01:28:51 +0000 (09:28 +0800)
committerwang.yu <wang.yu@advantech.com>
Tue, 18 Aug 2026 01:28:51 +0000 (09:28 +0800)
表格单元格中的 <select> 在导出时被解码为原始 <select>,Azure Wiki 会把它
当成未闭合的 HTML 标签并吞掉后续 Markdown。现在在 table2md 中将 < 和 >
转义为 &lt; / &gt;,避免解析器进入 HTML 状态。

public/design-doc.html

index 5d85c7796f681409dbfea7b065c776da642c9ff7..96411c4d74613b55aafc6eb8c2f93f7b2ef1918d 100644 (file)
   <h3>11.1 更新记录</h3>
   <ul>
     <li>2026-08-18 修复右下角 AI 悬浮按钮拖动时常失效的问题:图标改为不可原生拖拽、事件直接落在按钮上,避免浏览器图片拖拽劫持 Pointer 拖拽手势;按下拖动时不再有 1px 移位。</li>
-    <li>2026-08-18 修复「下载 Markdown」导入 Azure DevOps Wiki 后仅显示到 §4.2 的问题:代码块改以 4 空格缩进式代码块导出(不再用 ``` 围栏),避免围栏闭合异常吞掉后续章节。</li>
+    <li>2026-08-18 修复「下载 Markdown」导入 Azure DevOps Wiki 后仅显示到 §4.2 的问题:代码块改以 4 空格缩进式代码块导出(不再用 ``` 围栏),避免围栏闭合异常吞掉后续章节;表格单元格内将 <code>&lt;</code> 与 <code>&gt;</code> 转义为 HTML 实体,避免 Azure 把 <code>&lt;select&gt;</code> 当成未闭合标签吞掉后续内容。</li>
   </ul>
 
   <ul>
@@ -419,7 +419,7 @@ function inlineOf(node){
 function table2md(table){
   let md=''; const rows=table.querySelectorAll('tr');
   rows.forEach((tr,i)=>{
-    const cells=[...tr.querySelectorAll('th,td')].map(c=>inlineOf(c).replace(/\|/g,'\\|'));
+    const cells=[...tr.querySelectorAll('th,td')].map(c=>inlineOf(c).replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\|/g,'\\|'));
     md+='| '+cells.join(' | ')+' |\n';
     if(i===0) md+='| '+cells.map(()=>'---').join(' | ')+' |\n';
   });