Quill1.0与2.0对比

本文介绍了Quill从1.0版本升级到2.0版本时遇到的改动,包括方法、DOM结构和样式的变化,特别强调了列表元素和表格样式调整,以及升级过程中的兼容性问题需注意。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

        因项目迭代,需要给文本编辑器新增插入表格的功能,但是1.0版本没有提供该功能,必须把版本升级到2.0。在升级的过程中发现,1.0版本与2.0版本有较大改动。现总结目前在升级过程中发现的改动点。


Quill1.0与2.0对比

1.方法

  • pasteHTML升级为dangerouslyPasteHTML

    // 1.0版本
    this.quill.pasteHTML(newVal);
    // 2.0版本
    this.quill.clipboard.dangerouslyPasteHTML(newVal);
  • Parchment.Attributor.Style升级为Parchment.StyleAttributor

    // 1.0版本
    class lineHeightAttributor extends Parchment.Attributor.Style {};
    class FontFamilyStyle extends Parchment.Attributor.Style {};
    
    // 2.0版本
    class lineHeightAttributor extends Parchment.StyleAttributor {};
    class FontFamilyStyle extends Parchment.StyleAttributor{};

2.Dom

  • 在1.0版本中,有序列表使用的ol元素,无序列表使用的是ul元素;列表符号直接通过li::before来设置;
  • 在2.0版本中,有序列表和无序列表使用的都是ol元素,通过属性data-list来区分,ordered表示有序列表,bullet表示无序列表;列表符号加了span标签并设置类名为qi-ui。

3.样式

        如果在本地引入了quill的样式文件,那么升级到2.0版本之后,有以下两点需要注意:

(1)因为1.0版本中列表使用的元素是ul和ol,而2.0版本只有ul,所以元素的选择必定有所差别,如图所示(仅列出部分):

(2)因为只有2.0版本新增了表格的功能,所以1.0版本没有对表格元素的样式设置,新增样式如下:

.ql-editor table {
  table-layout: fixed;
  width: 100%;
}
.ql-editor table td {
  outline: none;
}

.ql-editor table {
  border-collapse: collapse;
}
.ql-editor td {
  border: 1px solid #000;
  padding: 2px 5px;
}

总结

        Quill1.0版本与2.0版本差别较大,升级时需要注意兼容性问题,如果找不到问题可去对比源码。

在 Vue 项目中使用 Quill 2.0 插件处理表格粘贴并保留原格式,通常涉及到监听文本组件的 paste 事件,并对粘贴的内容进行处理。Quill 提供了 API 来解析富文本内容并插入到编辑区域。 以下是简单的步骤: 1. 首先,在你的 Vue 组件中安装和导入 Quill 和相关的依赖,如 `quill` 和 `quill-paste-html` 插件: ```javascript import { Quill } from 'quill'; import 'quill-paste-html'; ``` 2. 初始化 Quill 实例,并配置粘贴插件: ```html <template> <div id="editor"> <quill-editor :quill="quillEditor"></quill-editor> </div> </template> <script> export default { data() { return { quillEditor: null, }; }, mounted() { this.quillEditor = new Quill('#editor', { modules: { pasteHtml: true, // 启用 HTML 粘贴功能 }, theme: 'snow', // 选择主题 }); }, methods: { handlePaste(e) { e.preventDefault(); // 阻止浏览器默认的行为 const pastedHTML = e.clipboardData.getData('text/html'); // 获取粘贴的 HTML 内容 if (pastedHTML) { this.quillEditor.insertEmbed(0, 'html', pastedHTML); // 将 HTML 插入到 Quill 编辑区 } }, }, }; </script> ``` 3. 添加 paste 事件监听器,当用户在组件内粘贴内容时触发 `handlePaste` 函数: ```javascript mounted() { this.$refs.editor.addEventListener('paste', this.handlePaste); } ``` 4. 当不再需要这个功能时,记得在组件卸载时移除事件监听器: ```javascript beforeDestroy() { this.$refs.editor.removeEventListener('paste', this.handlePaste); } ``` 通过以上设置,当你在 Quill 中粘贴含有格式的 HTML 时,原始格式应该会被保留。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值