HTML中需转义特殊字符(如

HTML里怎么原样显示<script></script>这种标签内容
直接写进HTML会触发解析,浏览器以为你要执行代码,结果要么消失、要么报错。必须把特殊字符转义成HTML实体,或者用<pre class="brush:php;toolbar:false;"><code></code>包裹并设置<code>textContent</code>或<code>innerHTML</code>安全处理。</p>
<ul>
<li><code><</code> → <code><</code>,<code>></code> → <code>></code>,<code>&</code> → <code>&</code>(手动转义最稳妥)</li>
<li>如果从JS动态插入,别用<code>innerHTML = str</code>,改用<code>element.textContent = str</code>,自动规避解析</li>
<li><code><pre class="brush:php;toolbar:false;"><code class="html"><div id="app"></div></code></pre>是标准做法,配合prism.js或highlight.js能高亮
JSON/XML示例在网页里不换行、不缩进?
浏览器默认忽略HTML里的空白符,<pre class="brush:php;toolbar:false;"></pre>能保留换行和空格,但XML/JSON本身缩进容易被压缩工具删掉,上线前要确认源码是否保留了格式。
- JSON示例建议用
JSON.stringify(obj, null, 2)生成带缩进的字符串再塞进<pre class="brush:php;toolbar:false;"><code></code></pre> - XML别用
innerHTML直接插原始字符串,否则<tag></tag>会被解析;先document.createTextNode(xmlStr)再append - 如果用
<textarea readonly></textarea>显示,也能100%保真,适合调试场景
prism.js高亮JSON但显示成乱码?
常见原因是HTTP响应头没设Content-Type: text/html; charset=utf-8,或者HTML文件本身没声明<meta charset="utf-8">,中文或特殊符号就变。
- 检查浏览器开发者工具的“Network”页签,看响应头中
charset是否为utf-8 <pre class="brush:php;toolbar:false;"><code class="json"></code>中的<code>class</code>值必须和Prism加载的语言插件名一致(比如<code>language-json</code>对应<code>prism-json.js</code>)</pre>- 不要在
<code>里混用或<br>,会破坏Prism的token解析逻辑
为什么XMLHttpRequest返回的XML字符串直接innerHTML会崩?
因为XML里有<foo attr="bar"></foo>这种结构,浏览器会当成HTML标签去解析,遇到非法嵌套或未闭合标签就静默失败或截断。
立即学习“前端免费学习笔记(深入)”;
- 正确做法:用
responseXML属性(如果是XML响应),或用DOMParser解析字符串:new DOMParser().parseFromString(xmlStr, "text/xml") - 如果只是想展示原文,仍走
textContent或textarea路线,绝不走innerHTML - 注意
DOMParser出错时返回的document里会有<parsererror></parsererror>节点,可据此判断XML是否合法
charset声明和textContent与innerHTML的误用,这两处一错,整个代码块就不可读。



















