首页 文章

CKEDITOR将html插入小部件部分不初始化嵌套小部件

提问于
浏览
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 方法 .

有什么建议如何处理?

1 回答

  • 0

    我在输入问题时弄清楚了......

    您必须首先调用 evt.sender.parts.content.setHtml(evt.sender.editor.dataProcessor.toHtml(content, 'a')); 来处理html,然后调用 evt.sender.editor.widgets.checkWidgets(); 以使用未初始化的小部件处理创建的html .

    为了防止与其他递归小部件的无限循环,对 checkWidgets() 的调用应该在 setTimeout 中完成 . IE:

    if (!checkingNewWidgets)
        checkingNewWidgets = setTimeout(function() {
           t.editor.widgets.checkWidgets();
           checkingNewWidgets = 0;
    });
    

相关问题