CKEDITOR将html插入小部件部件部件不会初始化嵌套小部件
我有一个小部件,允许用户在小部件的对话框中粘贴html 在小部件的CKEDITOR将html插入小部件部件部件不会初始化嵌套小部件,ckeditor,ckeditor4.x,Ckeditor,Ckeditor4.x,我有一个小部件,允许用户在小部件的对话框中粘贴html 在小部件的data(evt)event方法中,我随后调用evt.sender.parts.content.setHtml(content) 这对于普通html来说很好,但是如果html包含应该变成小部件的元素,这些元素就不会被初始化 我尝试调用evt.sender.editor.widgets.checkWidgets(),但这似乎没有任何作用。特别是,从未调用任何upcast方法 我还尝试获取内容部分的范围,以便可以使用editor.in
data(evt)
event方法中,我随后调用evt.sender.parts.content.setHtml(content)代码>
这对于普通html来说很好,但是如果html包含应该变成小部件的元素,这些元素就不会被初始化
我尝试调用evt.sender.editor.widgets.checkWidgets()代码>,但这似乎没有任何作用。特别是,从未调用任何upcast
方法
我还尝试获取内容部分的范围,以便可以使用editor.insertHtml,但在dom.Element
对象中的任何位置都找不到该范围
然后我尝试使用evt.sender.parts.content.setHtml(evt.sender.editor.dataProcessor.toHtml(content'a')代码>。这将调用upcast
方法,但由于某些原因,它从未调用init
方法
有什么建议可以解决这个问题吗?我在键入问题时就想出来了
您必须首先调用evt.sender.parts.content.setHtml(evt.sender.editor.dataProcessor.toHtml(content'a'))
处理html,然后evt.sender.editor.widgets.checkWidgets()
使用未初始化的小部件处理创建的html
为了防止其他递归小部件出现无限循环,对checkWidgets()
的调用应该在setTimeout
中完成。即:
if (!checkingNewWidgets)
checkingNewWidgets = setTimeout(function() {
t.editor.widgets.checkWidgets();
checkingNewWidgets = 0;
});