1

这和Image dialog密切相关——扩展onOk,而不是total overwrite ,只是我想到了另一种解决方案:

editor.on('insertElement', function (ev)
{
    var element = ev.data.$;

    if (element.tagName.toUpperCase() == 'IMG')
    {
         // do stuff with element
    }
});

这完美地工作。

然而,这个解决方案的问题在于,在CKEditor 的文档中它说:

执行 insertElement 调用的内部事件。

依赖内部事件是否安全?

4

1 回答 1

3

依赖这个事件有点冒险,虽然我很确定它不会在次要版本中改变,因为我们正在避免这样的改变。

但它可能会在未来的一些主要版本中进行修改。例如,在 CKEditor 4.0 中,我们被迫修改editor#insertHtmleditor#paste破坏了它们的向后兼容性。然而,editor#paste这是一个正常的、公开的事件,所以你可以看到——如果没有其他干净的方法来解决一些设计问题,一切都可能改变。

因此,我认为您可以依赖此事件,但就像所有其他 API 一样 - 主要版本可以带来一些必要的更改。

PS。覆盖对话框定义的onOk方法是一个更好的解决方案。

更新:在我看来,insertXXX 事件三重奏被错误地记录为内部。它们没有内在的东西,它们在类似的情况下非常有用。我们也许会改变他们的描述。

于 2013-06-04T17:58:21.250 回答