CKEditor5:如何在复制/剪切时向剪贴板文本添加内容?
CKEditor 捕获复制/剪切事件并修改剪贴板内容
你之前的事件监听没触发,核心问题出在直接访问了
ClassicEditor类的model.document,而非实际创建出来的编辑器实例的对应对象。ClassicEditor.create()返回的是一个Promise,得在Promise的then回调里拿到编辑器实例,才能正确绑定事件。正确的实现方式是等编辑器创建完成后,通过实例监听
clipboardOutput事件,再修改事件数据里的内容,把指定文本追加到剪贴板输出末尾。完整示例代码如下:
ClassicEditor .create(document.querySelector('#editor'), {}) .then(editor => { // 监听 clipboardOutput 事件 editor.model.document.on('clipboardOutput', (eventInfo, data) => { // 获取当前要复制的纯文本内容 const originalText = data.content.toPlainText(); // 追加你需要的指定内容 const modifiedText = originalText + '\n\n【这里是要追加的内容】'; // 将修改后的文本转换回CKEditor视图格式,替换剪贴板输出 data.content = editor.data.processor.toView(modifiedText); }); }) .catch(error => { console.error(error); });
- 补充说明:
clipboardOutput事件的data.content是CKEditor的视图结构对象,先用toPlainText()转成纯文本修改,再用editor.data.processor.toView()转回去,才能正确替换剪贴板的内容。- 如果需要追加HTML格式的内容,不用转纯文本,直接操作
data.content的视图元素即可,比如创建一个<p>标签追加到末尾。
内容的提问来源于stack exchange,提问作者Lukas Kahwe Smith
相关产品推荐
相关产品推荐

