新版编辑器HTML支持基于白名单和运行时过滤,禁用script、iframe、onerror等危险标签与属性;仅允许语义安全标签如b、i、ul、table等,div和span需后端显式开启;class须预配置且受CSS支持限制,style基本被全禁;所有执行性代码在提交前被sanitizer强制移除。

新版编辑器对 HTML 的支持不是“全放开”,而是有明确白名单和运行时过滤机制——直接写 、 或内联 onerror 事件会被静默剥离,不是失效,是压根不会进入 DOM。
哪些 HTML 标签能用?看编辑器的白名单配置
新版编辑器通常基于类似 DOMPurify 的净化逻辑,默认只保留语义安全的标签。常见可用标签包括: 不是所有 class 都有效。 这不是 bug,是强制安全策略。新版编辑器在内容提交前会调用 HTML sanitizer(例如 DOMPurify.withConfig),自动移除所有含执行能力的节点和属性。你看到的“没反应”,其实是内容还没发出去就被切掉了。 立即学习“前端免费学习笔记(深入)”; 真正容易被忽略的是:HTML 输入后的实时预览和最终渲染可能走两套解析流程——编辑器内部用 Quill/ProseMirror 渲染,而详情页可能用服务端 Markdown 转 HTML + 净化,导致同一段 HTML 在两边表现不一致。上线前务必在发布态下实测,别只信编辑器里的“所见即所得”。、、、、、、、、、、、、
、 、 。但注意: 是否允许,取决于后端是否在白名单中显式开启——很多部署默认禁用它们以防止样式逃逸。
写代码块时,必须成对闭合,且中间不能混入未转义的 或 >,否则整段被截断 中禁止出现
style="width:100%" 这类内联样式,宽度需靠 class 控制(如果编辑器支持 class 白名单)
只允许 src 和 alt 属性,onload、data-src 等一概被删class 和 style 怎么生效?得看后端策略
class="highlight" 能否起作用,取决于两个条件:前端 CSS 是否定义了该类,且后端净化器是否允许该 class 名通过。多数生产环境只放行有限几个 class,如 ql-align-center(Quill 衍生编辑器常用)、language-javascript(用于代码高亮)。style 属性则基本被全禁——即使写了 style="color:red",也会在保存前被移除。
→ 改写为 (如果编辑器仍支持 )或依赖编辑器内置 toolbar 按钮allowedClasses 配置项声明,否则 runtime 会过滤掉addAttributes 显式注册的,硬写无效
为什么
→ 整个 script 标签连同内容被删除 → onclick 属性被删,只剩
链接 → href 值被重写为 #,防止 JS 执行










