HTML 本身不是一种需要“转为 HTML 格式”的内容;如果你手头有纯文本、Markdown、JSON、富文本字符串,或者从编辑器(如 TinyMCE、Quill)导出的片段,想让浏览器正确渲染为 HTML,关键不在于“转换”,而在于确保字符串被安全、正确地插入到 DOM 中。直接 innerHTML = str 看似简单,但极易引发 XSS 或解析错误。
为什么 innerHTML 不总是可靠
当你拿到一段含标签的字符串(比如 "
Hello
Item
"),用 element.innerHTML = str 确实能渲染,但要注意:
如果 str 来自用户输入或外部 API,未过滤就赋值,会执行其中的 、onerror 等恶意代码
若字符串含未闭合标签(如 "
text"),浏览器会自动修复 DOM 结构,结果可能与预期不符
某些特殊字符(如 &、、>)在原始字符串中若未被 HTML 实体编码,会被当作标签解析
安全插入 HTML 字符串的推荐方式
现代浏览器支持 DOMParser,它把字符串当作标准 HTML 文档解析,返回 Document 对象,再提取 body 内容——天然规避了脚本执行,也避免污染当前页面上下文。