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

CKEditor 5(React) Track Changes插件不识别API替换文本问题求助

解决CKEditor 5 Track Changes插件无法识别自定义文本替换的问题

直接调用writer.insertText这类原生Model操作不会被Track Changes插件捕获,因为该插件依赖自身API追踪、记录变更,原生操作会绕过它的追踪逻辑。要让替换操作被插件识别,必须通过Track Changes提供的API执行修改。

修改方案

  1. 获取Track Changes插件实例
  2. 创建对应类型的建议(suggestion)
  3. 在建议上下文内执行替换操作(先删后插)
  4. 提交建议(可选,根据需求决定是否自动接受)

修改后的代码

const selection = this.editor.model.document.selection;
const trackChangesPlugin = this.editor.plugins.get('TrackChanges');

// 创建替换类型的建议,可按需添加作者信息
const replaceSuggestion = trackChangesPlugin.createSuggestion({
    type: 'replace',
    authorId: 'current-user-id', // 替换为你的用户ID配置
    authorName: 'Current User'    // 替换为你的用户名称配置
});

// 在建议上下文内执行替换逻辑
trackChangesPlugin.applySuggestion(replaceSuggestion, () => {
    this.editor.model.change(writer => {
        // 删除选中的文本内容
        const selectedRange = selection.getFirstRange();
        if (selectedRange) {
            writer.remove(selectedRange);
        }
        // 插入新文本到原选中位置
        const insertPosition = selection.getFirstPosition();
        writer.insertText(newText, insertPosition);
    });
});

// 若需要自动接受建议(直接显示已追踪的变更),调用此方法;若需用户手动处理,可省略
trackChangesPlugin.acceptSuggestion(replaceSuggestion);

关键说明

  • Track Changes插件仅会追踪通过自身API发起的修改,必须用createSuggestion创建变更容器,再通过applySuggestion执行实际编辑
  • 替换操作需要先删除选中内容再插入新文本,确保逻辑是完整的替换而非追加
  • 作者信息需根据你的项目配置填写,若插件已全局配置作者,可省略这部分参数

内容的提问来源于stack exchange,提问作者S K R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:06:00