You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调用TinyMCE公开方法实现类paste插件的HTML过滤供其他编辑器使用

TinyMCE 原生独立调用方案

TinyMCE 4及以上版本内置的tinymce.html.DomParser和tinymce.html.Serializer两个工具类可以脱离完整编辑器实例单独调用,完全复用原生过滤逻辑,和你给出的paste配置效果完全一致:

// 提前引入TinyMCE核心脚本,无需初始化编辑器
const validElements = 'b/strong,i/em';
const retainStyles = 'font-weight,font-style,font-size';

// 初始化解析器
const parser = tinymce.html.DomParser({
  valid_elements: validElements,
  valid_styles: {
    '*': retainStyles
  }
});
// 初始化序列化器
const serializer = tinymce.html.Serializer({
  valid_elements: validElements,
  valid_styles: {
    '*': retainStyles
  }
});

// 封装过滤方法
function filterHtml(rawHtml) {
  const root = parser.parse(rawHtml);
  return serializer.serialize(root);
}

调用该方法即可得到和TinyMCE paste过滤规则完全一致的干净HTML内容。

第三方轻量替代方案

如果不想引入TinyMCE依赖,可以使用专门的HTML过滤库实现相同效果,配置逻辑如下:

// 引入sanitize-html库
const sanitizeHtml = require('sanitize-html');

function filterHtml(rawHtml) {
  return sanitizeHtml(rawHtml, {
    allowedTags: ['b', 'strong', 'i', 'em'],
    allowedStyles: {
      '*': {
        'font-weight': [/.*/],
        'font-style': [/.*/],
        'font-size': [/.*/]
      }
    }
  });
}

该库无额外依赖,体积轻量,过滤逻辑灵活可扩展,完全满足需求。

内容的提问来源于stack exchange,提问作者MaDD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:15:08