Wenzi

CKEditor5 光标在粘贴的图片下一行

蚊子前端博客
发布于 2025/07/31 19:46
在 CKEdtior5 中,如何在粘贴图片后,让光标自动进入到下一行!

CKEdtor5 在粘贴图片后,默认会选中图片,若用户想继续输入时,还得再手动按下方向键中的右键,将光标移动到下一行。

但在 IM 的聊天中,其实我们更希望是在粘贴后,光标能自动在图片的下一行。让用户继续进行输入。

那么如何修改编辑器的默认行为呢?

其实是不难,我们这里扩展一个 CKEditor5 的插件,在图片粘贴后,将光标移动到图片的下一行。

import Plugin from "@ckeditor/ckeditor5-core/src/plugin";

class ObjectURLUploadAdapterPlugin extends Plugin {
  init() {
    this.editor.plugins.get("ImageUploadEditing").on("uploadComplete", (_, { imageElement }) => {
      this.editor.model.change((writer) => {
        // 创建新段落
        const softBreak = writer.createElement("softBreak");

        // 将段落插入到图片之后
        writer.insert(softBreak, imageElement, "after");

        // 将光标定位到新段落
        writer.setSelection(softBreak, 0);
      });
    });
  }
}

export default ObjectURLUploadAdapterPlugin;

获取图片上传插件后,然后监听图片加载成功后,在该位置的下面插入一个换行符 softBreak 。

然后再把这个插件插入到 CKEditor 中。

import { CKEditor } from "@ckeditor/ckeditor5-react";
import { ClassicEditor } from "@ckeditor/ckeditor5-editor-classic";

const App = () => {
  return <CKEditor editor={ClassicEditor} extraPlugins={[ObjectURLUploadAdapterPlugin]} />;
};

大功告成!!!

标签:editor
阅读(36)
No data
No data