highlight.js 必须用 结构、language-xxx 类名、DOM 就绪后调用 highlightAll(),单独 不生效;需引入 CSS,HTML 特殊字符要转义或用 text/plain 脚本标签。

直接用 常见错误是脚本放在 直接写 可以,但不推荐。简单匹配 highlight.js 是最稳的路径,但必须写对 <pre class="brush:php;toolbar:false;"><code></code> 结构、声明 language 类、等 DOM 就绪再调用 <code>highlightAll()</code>;漏掉任一环,高亮就完全不生效。</strong></p>
<H3>为什么单独 <code><code></code> 标签无法触发高亮</H3>
<p><code>highlight.js</code> 默认只扫描 <code><pre class="brush:php;toolbar:false;"><code></code> 这种嵌套结构 —— 它的设计逻辑是“预格式化内容才值得语法解析”,所以 <code><p><code>console.log(1)</code></p></code> 这类内联写法不会被识别。</p>
<ul>
<li>错误示例:<code><code class="javascript">const a = 1;</code></code> → 不高亮</li>
<li>正确结构:<code><pre class="brush:php;toolbar:false;"><code class="js">const a = 1;</code></pre>
class 值必须是 language-xxx 或 lang-xxx(如 language-html、lang-py),写成 js 或 javascript 无效hljs.highlightElement(el),不能依赖自动扫描DOM 加载时机和初始化方式怎么选
里就调 hljs.highlightAll(),此时 <pre class="brush:php;toolbar:false;"><code></code> 节点还没生成,自然没反应。</pre>
前,或用 DOMContentLoaded 包裹:document.addEventListener('DOMContentLoaded', () => hljs.highlightAll());
hljs.initHighlightingOnLoad(),新版文档已移除该 APIhljs.highlightAll(),不能只靠初始加载HTML 特殊字符怎么安全放进
<code> 里
<div class="app"> 会被浏览器当成真实标签解析,导致 DOM 错乱或高亮失败。<p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p>
<ul>
<li>最稳做法:把原始代码塞进 <code><script type="text/plain"></script> 标签,再用 JS 读取 .textContent 插入 <pre class="brush:php;toolbar:false;"><code></code>,既保留符号又不被解析</pre>
→ <code><,> → >,& → &(注意 & 要写两次,否则会被解一次)
innerHTML 直接拼接未转义字符串,会丢事件监听器、表单值、动态节点要不要自己写正则高亮 HTML
]*> 看似能标红标签,但很快会遇到边界问题:自闭合标签、属性里的 、JS 字符串中的 HTML 片段、注释里的 <code>



















