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

如何在Quill编辑器使用clipboard.dangerouslyPasteHTML保留自定义CSS类?

解决Quill粘贴HTML时保留自定义CSS类的问题

Quill默认会过滤掉未在其Blot系统中注册的自定义CSS类,要保留perso-class可以通过以下两种方式配置:

方法1:自定义Block Blot(推荐)

继承Quill默认的段落Blot,明确允许perso-class类:

// 导入Quill和默认的Block Blot
const Quill = require('quill');
const Block = Quill.import('blots/block');

// 自定义段落Blot
class CustomParagraph extends Block {
  // 读取节点的类名并返回
  static formats(node) {
    const className = node.getAttribute('class');
    return className === 'perso-class' ? className : super.formats(node);
  }

  static blotName = 'custom-paragraph';
  static tagName = 'P';
  static className = 'perso-class';
}

// 注册自定义Blot到Quill
Quill.register(CustomParagraph, true);

配置完成后执行粘贴代码,perso-class即可被保留:

let content= '<p class="perso-class">test</p>'; 
quill.clipboard.dangerouslyPasteHTML(content);

方法2:使用Clipboard模块的Matcher

通过拦截Clipboard的处理逻辑,手动为段落添加类:

// 获取Quill的Clipboard模块
const clipboard = quill.getModule('clipboard');

// 添加匹配器处理p标签
clipboard.addMatcher('p', (node, delta) => {
  const className = node.getAttribute('class');
  if (className === 'perso-class') {
    // 为delta添加class属性
    delta.attributes = { ...delta.attributes, class: className };
  }
  return delta;
});

方法1符合Quill的Blot设计规范,适合长期使用;方法2更灵活,适合临时处理特定类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:45:36