微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

原文地址:https://www.jb51.cc/js/152403.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐