我已经设法从插件中获得类似的代码,但在这里我试图从主机应用程序中注入文本
当您将它实现为插件时它会起作用,因为那时您使用了依赖于Text
的同一包中的类。ClassicEditor
当您在编辑器中使用捆绑包时尝试执行相同操作时,您在不知不觉中复制了整个@ckeditor/ckeditor5-engine
包。这个包的一个实例被捆绑到编辑器中,第二个你稍后使用(在你展示的片段中),所以 webpack 再次导入它。
这是我们目前遇到的一个环境问题——您不能将插件添加到 CKEditor 5 构建中。
幸运的是,我们很久以前就注意到了这个问题,并且从那时起已经改进了很多。插入文本不需要导入任何内容:
editor.model.change( writer => {
const insertPosition = editor.model.document.selection.getFirstPosition();
writer.insertText( 'foo', insertPosition );
} );
该writer.insertText()
方法还可以插入带有属性的文本,例如,您可以像这样插入粗体文本:
editor.model.change( writer => {
const insertPosition = editor.model.document.selection.getFirstPosition();
writer.insertText( 'foo', { bold: true }, insertPosition );
} );
或者,如果您想插入链接,请参阅如何以编程方式在 CKEditor 5 中的当前位置插入链接