CKEditor 5 - 插入文本
CKEditor 5 - insert text
是否可以在当前选择的位置向编辑器中插入文本?
我试过了
import Text from '@ckeditor/ckeditor5-engine/src/model/text';
function insertText() {
let text = new Text('test');
ckEditor.model.insertContent(text, ckEditor.model.document.selection);
}
其中 ckEditor
是从 ClassicEditor.create
返回的编辑器对象
代码运行没有错误,但没有任何反应
我已经设法让类似的代码在插件中工作,但在这里我试图从主机应用程序中注入文本
I have managed to get similar code to work from within a plugin, but here I am trying to inject the text from the host app
当你将它实现为插件时它起作用了,因为你使用了 ClassicEditor
所依赖的同一个包中的 Text
class。
当您在与编辑器一起使用捆绑包时尝试执行相同的操作时,您会在不知不觉中复制整个 @ckeditor/ckeditor5-engine
包。这个包的一个实例被捆绑到编辑器中,第二个你稍后使用(在你展示的片段中),所以 webpack 再次导入它。
这是我们目前面临的环境问题 – you can't add plugins to a CKEditor 5 build。
幸运的是,我们很久以前就注意到了这个问题,并且从那时起已经有了很大的改进。插入文本不需要导入任何东西:
editor.model.change( writer => {
const insertPosition = editor.model.document.selection.getFirstPosition();
writer.insertText( 'foo', insertPosition );
} );
writer.insertText()
method can also insert a text with attributes,例如您可以像这样插入粗体文本:
editor.model.change( writer => {
const insertPosition = editor.model.document.selection.getFirstPosition();
writer.insertText( 'foo', { bold: true }, insertPosition );
} );
或者如果你想插入一个link,然后看
这对我有用,使用由 (ready) 返回的编辑器:
insertTag(tag: string) {
const insertPosition = this.editor.model.document.selection.getFirstPosition();
const viewFragment = this.editor.data.processor.toView(`<p>${tag}</p>`);
const modelFragment = this.editor.data.toModel(viewFragment);
this.mod.insertContent(modelFragment);
}
另见 the font。
只是添加,要在插入文本后启用输入焦点,请添加此代码。
editor.editing.view.focus()
是否可以在当前选择的位置向编辑器中插入文本?
我试过了
import Text from '@ckeditor/ckeditor5-engine/src/model/text';
function insertText() {
let text = new Text('test');
ckEditor.model.insertContent(text, ckEditor.model.document.selection);
}
其中 ckEditor
是从 ClassicEditor.create
代码运行没有错误,但没有任何反应
我已经设法让类似的代码在插件中工作,但在这里我试图从主机应用程序中注入文本
I have managed to get similar code to work from within a plugin, but here I am trying to inject the text from the host app
当你将它实现为插件时它起作用了,因为你使用了 ClassicEditor
所依赖的同一个包中的 Text
class。
当您在与编辑器一起使用捆绑包时尝试执行相同的操作时,您会在不知不觉中复制整个 @ckeditor/ckeditor5-engine
包。这个包的一个实例被捆绑到编辑器中,第二个你稍后使用(在你展示的片段中),所以 webpack 再次导入它。
这是我们目前面临的环境问题 – you can't add plugins to a CKEditor 5 build。
幸运的是,我们很久以前就注意到了这个问题,并且从那时起已经有了很大的改进。插入文本不需要导入任何东西:
editor.model.change( writer => {
const insertPosition = editor.model.document.selection.getFirstPosition();
writer.insertText( 'foo', insertPosition );
} );
writer.insertText()
method can also insert a text with attributes,例如您可以像这样插入粗体文本:
editor.model.change( writer => {
const insertPosition = editor.model.document.selection.getFirstPosition();
writer.insertText( 'foo', { bold: true }, insertPosition );
} );
或者如果你想插入一个link,然后看
这对我有用,使用由 (ready) 返回的编辑器:
insertTag(tag: string) {
const insertPosition = this.editor.model.document.selection.getFirstPosition();
const viewFragment = this.editor.data.processor.toView(`<p>${tag}</p>`);
const modelFragment = this.editor.data.toModel(viewFragment);
this.mod.insertContent(modelFragment);
}
另见 the font。
只是添加,要在插入文本后启用输入焦点,请添加此代码。
editor.editing.view.focus()