这与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它说:
Internal event to perform the insertElement call.
依赖内部事件安全吗?
最佳答案
依赖这个事件有点冒险,虽然我很确定它不会在次要版本中改变,因为我们正在避免这样的改变。
但它可能会在未来的某个主要版本中进行修改。例如在 CKEditor 4.0 中我们被迫修改 editor#insertHtml
和 editor#paste
打破了它们的向后兼容性。然而,editor#paste
是一个正常的公共(public)事件,因此如您所见 - 如果没有其他干净的方法来解决某些设计问题,一切都可能改变。
因此,我认为您可以依赖此事件,但就像所有其他 API 一样 - 主要版本可以带来一些必要的更改。
附言。覆盖对话框定义的 onOk
方法是一个更好的解决方案。
更新:在我看来,insertXXX 事件三重奏被错误地记录为内部事件。它们没有任何内在的东西,它们在类似情况下非常有用。我们可能会更改它们的描述。
关于javascript - 挂接到 insertElement 事件是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16922528/