CKEDITOR insert html into widget part 不初始化嵌套的小部件
CKEDITOR insert html into widget part does not initialize nested widgets
我有一个小部件,允许用户在小部件的对话框中粘贴 html。
在小部件的 data(evt)
事件方法中,我然后调用 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;
});
我有一个小部件,允许用户在小部件的对话框中粘贴 html。
在小部件的 data(evt)
事件方法中,我然后调用 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;
});