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

CKEditor 5 如何在内容末尾追加文本?两种尝试方法均遇问题

解决CKEditor追加内容到末尾的问题

问题分析

  • 第一种方法依赖当前选区位置,若打开模态框时光标处于内容开头,插入位置就会是开头,无法固定到内容末尾。
  • 第二种方法错误点:createRange()必须传入起始位置参数,且insertText不支持直接插入HTML,参数使用不符合API要求,导致抛出model-createpositionat-offset-required错误。

正确解决方案

1. 追加纯文本到内容末尾

直接获取编辑器根元素的末尾位置,插入纯文本:

rememberEditorInvoiceMailing[0].model.change(writer => {
  const root = rememberEditorInvoiceMailing[0].model.document.getRoot();
  // 创建根元素末尾的插入位置
  const insertPosition = writer.createPositionAt(root, 'end');
  writer.insertText('需要追加的纯文本内容', insertPosition);
});

2. 追加HTML内容到内容末尾

CKEditor的Model层无法直接插入HTML,需先将HTML转换为Model可识别的结构,再插入:

const editor = rememberEditorInvoiceMailing[0];
const htmlContent = '<p>需要追加的HTML内容</p>';

// 将HTML转换为View片段,再转为Model片段
const viewFragment = editor.data.processor.toView(htmlContent);
const modelFragment = editor.data.toModel(viewFragment);

editor.model.change(writer => {
  const root = editor.model.document.getRoot();
  const insertPosition = writer.createPositionAt(root, 'end');
  writer.insert(modelFragment, insertPosition);
});

内容的提问来源于stack exchange,提问作者Mark_

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:54:28