已被 HTML5 彻底移除,因其语义缺失、触发怪异模式且存在 XSS 风险;应改用转义后 组合,确保安全与标准兼容。

别用 标签 —— 它在 HTML5 中已被彻底移除,现代项目中继续使用会破坏语义、触发 quirks mode,且存在潜在 XSS 风险。
为什么 不能用了
浏览器虽仍支持 (出于向后兼容),但它早在 HTML 4.01 就被标记为“deprecated”,HTML5 直接删除了该元素定义。W3C 明确不鼓励任何新代码使用它。
- 它无法嵌套自身,连
都会提前截断... - 它绕过所有 HTML 解析规则:不转义、不执行 JS、不解析实体(
会原样显示为),但这也意味着你无法在里面写合法的 HTML 注释或 CDATA - 若用户输入含恶意脚本(如
<script>alert(1)</script>),会照单输出——看似安全,实则误导开发者忽略真正需要的输入过滤和输出编码
+ 是标准替代组合
是标准替代组合要安全、语义化地展示未转义的 HTML 源码,必须手动转义内容,再用 保持格式、 表明语义。
-
只负责保留空格与换行,不处理字符转义;是内联语义标签,应包裹在内部 - 必须对原始 HTML 字符做转义:
→,>→>,&→&(注意顺序:先转&,再转其他) - 服务端渲染时建议用语言内置函数(如 PHP 的
htmlspecialchars($str, ENT_NOQUOTES | ENT_HTML5),Python 的html.escape()) - 前端动态插入时避免直接拼接字符串,改用
textContent赋值,例如:el.textContent = 'Hello'
遇到用户提交 HTML 源码怎么办
这是最易踩坑的场景:你拿到一段用户输入的 HTML 字符串,想“原样显示”给其他人看。
- 绝对不要把用户输入直接塞进
或未转义的—— 即使它看起来“没执行”,也违背了防御性编码原则 - 转义不是可选项,是必选项。哪怕只显示
,也要转成,否则后续若混入<script></script>就失控 - 如果需高亮语法,用
highlight.js或Prism.js等库,它们内部已强制转义输入,再做 token 渲染 - 注意:某些 CMS 或富文本编辑器导出的 HTML 可能含
或<script></script>,这类内容不应走“源码展示”路径,而应走沙箱 iframe 或白名单过滤
真正麻烦的从来不是怎么让标签“不生效”,而是如何在保留可读性的同时守住安全边界—— 给了假安全感,而正确转义+语义标签才是稳住页面结构的最小依赖。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











