ckeditorInstance.insertElement( CKEDITOR.dom.element.createFromHtml('<html></html>'));
它插入很好,但是ckeditor不能识别插入作为一个小部件的元素,所以小部件可编辑的字段没有像他们应该启用.
有没有办法使ckeditor重新扫描其内容以初始化任何尚未初始化的新窗口小部件?
解决方法
首先 – 有一个小部件的数据格式(如何在数据中表示小部件)和内部格式(如何在编辑器中表示)的分离.您可能熟悉upcast和downcast功能 – 它们使这些格式之间进行转换(upcasting意味着将数据格式转换为内部格式).
upcasting和downcasting工作只有在数据字符串被处理,但是如果你使用编辑器insertElement插入内容没有处理,所以没有upcasting.
插入
你有两个解决方案:
>使用editor#insertHtml
而不是编辑器#insertElement.您的小部件将在插入之前上传,因此它将以良好的格式插入.
>照顾上传(如果需要)自己,并使用编辑器#insertElement.
初始化
这是小部件生命的第一步 – 它必须被插入.二是要初始化.
>目前有一个bug(它将在两周内修复),insertHtml方法插入的小部件没有被初始化.所以,在这个时候,在编辑#insertHtml插件后,你需要调用:
editor.widgets.checkWidgets()
>如果使用编辑器#insertElement,则需要处理初始化窗口小部件.要做那个电话:
editor.widgets.initOn( element,'widgetName' )
在这两种情况下,插入它后初始化窗口小部件
查看Widgets API了解更多详情.
另见我的回答explaining how to know if an element is a widget and how to insert them into editor.