惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
B
Blog RSS Feed
The GitHub Blog
The GitHub Blog
爱范儿
爱范儿
博客园 - 司徒正美
J
Java Code Geeks
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
大猫的无限游戏
大猫的无限游戏
D
Docker
Blog — PlanetScale
Blog — PlanetScale
Recent Announcements
Recent Announcements
罗磊的独立博客
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
腾讯CDC
T
The Blog of Author Tim Ferriss
小众软件
小众软件
U
Unit 42
T
Tailwind CSS Blog

蚊子的前端博客

微说 | 有的人觉得只要不考XX,一定能考好!-蚊子的前端博客 微说 | 春天来了-蚊子的前端博客 明天和意外不知道哪个先来-蚊子的前端博客 微说 | 既然错过了路口,就及时止损,重新规划路线上路-蚊子的前端博客 微说 | 2025年的出生人口数是792万-蚊子的前端博客 微说 | 工作年终总结,让写对接的接口的数量?-蚊子的前端博客 微说 | 温家宝:没有政治体制改革的成功 经济体制改革不可能进行到底-蚊子的前端博客 微说 | 违法犯罪了该不该被禁言?-蚊子的前端博客 微说 | 不明白为什么在推荐去俄罗斯旅游-蚊子的前端博客 微说 | 易中天论骗子-蚊子的前端博客 微说 | 一场大风吹散了秋天-蚊子的前端博客 微说 | 既要、又要、还要、更要!-蚊子的前端博客 又是一年的国庆雨季-蚊子的前端博客 微说 | 预估下2025年的出生人口数据-蚊子的前端博客 微说 | 可惜了我那些小时候的书本-蚊子的前端博客 微说 | 牛马有的是,驴不够了!-蚊子的前端博客 微说 | 能否有一条非户口也能高考的路-蚊子的前端博客 微说 | 小聊中医-蚊子的前端博客 微说 | 将要制作的一款新产品-蚊子的前端博客 微说 | 做人要有信-蚊子的前端博客 微说 | 好一个正义联盟-蚊子的前端博客 微说 | 都是见过吃过的主儿-蚊子的前端博客 微说 | 追求8小时工作制有错吗?-蚊子的前端博客 微说 | 如果尖锐的批评完全消失-蚊子的前端博客 微说 | 很好!-蚊子的前端博客 微说 | 封禁用户可以,但要告知具体原因-蚊子的前端博客 微说 | 面朝大海,春暖花开-蚊子的前端博客 微说 | 程序员的悲哀是什么?-蚊子的前端博客 微说 | 2025年出生人口的预测-蚊子的前端博客 前端在 LiveKit 中如何获取所有的参与者-蚊子的前端博客
CKEditor5 光标在粘贴的图片下一行-蚊子的前端博客
author · 2025-07-31 · via 蚊子的前端博客

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]} />;
};

大功告成!!!