javascript – CKEditor,初始化添加了insertElement的窗口小部件

前端之家收集整理的这篇文章主要介绍了javascript – CKEditor,初始化添加了insertElement的窗口小部件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些创建的小部件,他们在初始启动时加载正常,但是我通过以下方式将更多的这种类型的小部件添加到编辑器:
ckeditorInstance.insertElement(
        CKEDITOR.dom.element.createFromHtml('<html></html>'));

它插入很好,但是ckeditor不能识别插入作为一个小部件的元素,所以小部件可编辑的字段没有像他们应该启用.

有没有办法使ckeditor重新扫描其内容以初始化任何尚未初始化的新窗口小部件?

解决方法

数据格式

首先 – 有一个小部件的数据格式(如何在数据中表示小部件)和内部格式(如何在编辑器中表示)的分离.您可能熟悉upcastdowncast功能 – 它们使这些格式之间进行转换(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.

猜你在找的JavaScript相关文章