我发现我可以用这个钩到onOk
:
editor.on('dialogShow', function (ev)
{
var name = ev.data.getName();
var definition = ev.data.definition;
if (name == 'image')
{
definition.onOk = function(e)
{
console.log( e );
};
}
});
棒极了,除非现在默认行为被删除,导致没有图像被添加到CK内容。
检查CK的源代码,我不想破坏默认提供的74行功能。
我的目标是简单地通过一个回调运行图像后,它已被追加。
复制/粘贴、修改是保留扩展功能的唯一方法,还是有其他方法?
maximkou解的小改进:
var oldImplementation = definition.onOk;
definition.onOk = function( e ) {
oldImplementation.apply( this, [].slice.call( arguments ) );
console.log( e );
};
这个解是好的,而且我敢说它是最干净的。
更新:我已经找到了一个更好的解决方案-有dialog#ok
事件,我刚刚了解:)。所以你不需要改变对话框的定义——你可以像这样绑定你的事件监听器:
editor.on('dialogShow', function ( evt ) {
if ( evt.data.getName() == 'image' ) {
var listener = evt.data.on( 'ok', function() {
console.log( 'ok!' );
} );
// We need to remove that listener, to avoid duplicating it on
// next dialogShow.
evt.data.on( 'hide', function() {
listener.removeListener();
} );
}
} );
var oldImplementation = definition.onOk;
definition.onOk = function(e)
{
oldImplementation(e);
console.log( e );
};