根本原因
1. `marked.min.js` + 你旧脚本是通过 **`.textContent`** 读取 `<markdown>` 里的纯文本,再 `marked.parse()` → 成功渲染。
2. 新脚本改成 **`.innerHTML`** 读取 `<markdown>` 里已经 **被浏览器转义** 的内容(`<table>` 等),于是 `marked.parse()` 只能解析出 **纯文本**,Markdown 失效。
---
## ✅ 零侵入修复方案(仅改 footer)
**把 footer 里那段脚本替换为:**
```html
<script>
/* 手机版:只读 <markdown> 的纯文本再重新渲染 */
(function () {
/* 1. 找到所有 <markdown> */
document.querySelectorAll('markdown').forEach(function (el) {
if (el.dataset.done) return; // 只执行一次
const raw = el.textContent.trim(); // 关键:读纯文本
if (!raw) return;
el.innerHTML = DOMPurify.sanitize(marked.parse(raw));
el.dataset.done = '1';
});
/* 2. 代码高亮 */
if (window.hljs) hljs.highlightAll();
})();
</script>
```
---
## ✅ 一句话总结
> **用 `.textContent` 而不是 `.innerHTML` 去读取 `<markdown>` 的内容,**
> **就能让 Markdown 渲染重新生效,且完全避开二次转义问题。**
|