mis*_*nkt 10 javascript jquery widget contenteditable ckeditor
我创建了一些小部件,他们在初始启动时加载很好,但我通过以下方式将更多此类小部件添加到编辑器中:
ckeditorInstance.insertElement(
CKEDITOR.dom.element.createFromHtml('<html></html>'));
Run Code Online (Sandbox Code Playgroud)
它插入很好,但是ckeditor无法识别作为窗口小部件插入的元素,因此窗口小部件可编辑字段不会像它们应该那样启用.
有没有办法让ckeditor重新扫描其内容来初始化它尚未初始化的任何新小部件?
Rei*_*mar 15
首先 - 小部件的数据格式(小部件如何在数据中表示)和内部格式(在编辑器中如何表示)之间存在分离.您可能熟悉upcast和downcast函数 - 它们在这些格式之间进行转换(向上转换意味着将数据格式转换为内部格式).
仅当处理数据字符串时,向上转换和向下转换才起作用,但如果使用editor#insertElement没有处理的方式插入内容,则不会进行向上转换.
你有两个解决方案:
用editor#insertHtml而不是editor#insertElement.您的小部件将在插入之前进行上传,因此它将以良好的格式插入.
自己照顾好转播(如果需要)并使用editor#insertElement.
这是小部件生命的第一步 - 必须插入.第二是要初始化.
有一个错误当前(这将是固定在两周内),通过插入部件insertHtml方法不被初始化.所以,此时,插入小部件后editor#insertHtml需要调用:
如果您使用editor#insertElement,则需要注意初始化小部件.要做那个电话:
在两种情况下,在插入后初始化窗口小部件.
查看Widgets API以获取更多详细信息.
另请参阅我的答案,解释如何知道元素是否是窗口小部件以及如何将它们插入编辑器中.