首页 > 文章列表 > 如何在非Vue项目中使用vue-quill-editor实现纯文本粘贴功能?

如何在非Vue项目中使用vue-quill-editor实现纯文本粘贴功能?

109 2025-03-12

如何在非Vue项目中使用vue-quill-editor实现纯文本粘贴功能?

在非vue项目中使用vue-quill-editor实现粘贴纯文本功能

非vue项目中引入vue-quill-editor时,粘贴富文本转换为纯文本并插入光标所在位置的需求,可以按照以下步骤解决:

首先,修改载入库的顺序,确保quill.js加载顺序在vue-quill-editor.js之前。

然后,在mounted生命周期钩子中,通过clipboard.addmatcher方法添加自定义粘贴内容匹配器:

mounted() {
  const node_type = { element_node: 1 };
  const quill = this.$refs.myquilleditor.quill;
  quill.clipboard.addmatcher(node_type.element_node, (node, delta) => {
    const plaintext = node.innertext;
    const delta = quill.import('delta');
    return new delta().insert(plaintext);
  });
}

上述代码中,通过自定义匹配器,将粘贴的富文本转换为纯文本。需要注意的是,原来的一些 quill 功能可能会失效。

其次,为了解决光标位置及样式问题,可以采用更新内容的 delta 方法,如下:

pasteListenerCb(event) {
  event.preventDefault();
  let paste = (event.clipboardData || window.clipboardData).getData('text');
  this.clipboardData = paste;

  const pasteLength = paste.length;
  const quill = this.$refs.myQuillEditor.quill;
  const index = quill.selection.savedRange.index;

  quill.updateContents([
    {
      retain: index,
    },
    {
      insert: paste,
    },
  ]);
}

通过 delta 的 retain 和 insert 操作,将之前光标位置的内容保留,并在指定位置插入纯文本。注意,index 为 0 时可能会引发错误,需要进行相应的处理。

来源:1732229375