如何禁用Micromark将HTML字符转换为HTML实体的功能?
如何禁用Micromark将HTML字符转换为HTML实体的功能?
嘿,我完全懂你的困扰——micromark出于安全考虑,默认会把所有HTML内容转义成实体字符,但如果你确实需要保留原始HTML代码,咱们调整下配置就能搞定。
具体来说,你需要启用micromark的HTML扩展,同时开启允许「危险HTML」的选项(这个选项就是用来关闭转义、保留原始HTML的核心配置)。下面是修改后的完整代码,你可以直接复用:
import { micromark } from 'micromark'; import { gfm, gfmHtml } from 'micromark-extension-gfm'; import { html, htmlHtml } from 'micromark-extension-html'; // 导入HTML扩展 const mdd = ` # Title <div> This is HTML inside markdown. <img src="image.jpg" alt="Example image" /> </div> `; console.log(micromark(mdd, { extensions: [gfm(), html()], // 添加HTML语法识别扩展 htmlExtensions: [gfmHtml(), htmlHtml({ allowDangerousHtml: true })] // 配置允许保留原始HTML }));
给你拆解下关键配置的作用:
html()扩展让micromark能够识别HTML语法,而不是把它当成普通文本处理htmlHtml({ allowDangerousHtml: true })告诉HTML生成器跳过转义步骤,直接输出原始的HTML标签和属性
运行这段代码后,你就能得到期望的输出了——原始HTML标签会被完整保留,不会再转换成实体字符。
最后提醒一句:开启allowDangerousHtml后,如果处理的是用户输入的未知内容,会存在XSS攻击的风险,所以只有当你完全信任输入来源的时候,才建议使用这个配置哦。
备注:内容来源于stack exchange,提问作者nbunderson
相关产品推荐
相关产品推荐

