图像对话框-扩展onOk,而不是完全覆盖

Image dialog — extend onOk, instead of total overwrite

本文关键字:覆盖 对话框 扩展 onOk 图像      更新时间:2023-09-26

我发现我可以用这个钩到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 );
};