这与Image dialog — extend onOk, instead of total overwrite密切相关,只是我想到了另一种解决方案:
editor.on('insertElement', function (ev)
{
var element = ev.data.$;
if (element.tagName.toUpperCase() == 'IMG')
{
// do stuff with element
}
});
这很有效。
这个解决方案的问题在于CKEditor's Docs它说:
执行insertElement调用的内部事件。
依靠内部事件是否安全?
答案 0 :(得分:3)
依赖这个事件有点冒险,虽然我很确定它在次要版本中不会被改变,因为我们正在避免这种变化。
但它可能会在未来的主要版本中进行修改。例如,在CKEditor 4.0中,我们被迫修改editor#insertHtml
和editor#paste
,从而破坏了它们的向后兼容性。但是,editor#paste
是一个正常的公共事件,正如您所看到的 - 如果没有其他,干净的方法来解决某些设计问题,一切都可能会发生变化。
因此,我认为您可以依赖此事件,但就像其他所有API一样 - 主要版本可以带来一些必要的更改。
PS。覆盖对话框定义的onOk
方法是一种更好的解决方案。
更新:在我看来,insertXXX事件三重奏被错误地记录为内部。他们没有内在的东西,在类似的情况下它们非常有用。我们或许会改变他们的描述。