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

时间:2013-06-04 16:00:38

标签: javascript ckeditor

我发现我可以用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's source,我不想破坏默认提供的74行功能。

我的目标是在附加后通过回调运行图像。

是复制/粘贴,修改保留扩展功能的唯一方法,还是有另一种方式?

2 个答案:

答案 0 :(得分:8)

maximkou解决方案的小改进:

var oldImplementation = definition.onOk;
definition.onOk = function( e ) {
    oldImplementation.apply( this, [].slice.call( arguments ) );
    console.log( e );
};

这个解决方案是好的,AFAIK是最干净的。

更新:我找到了一个更好的解决方案 - 我刚学到的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();
        } );
    }
} );

答案 1 :(得分:2)

var oldImplementation = definition.onOk;
definition.onOk = function(e)
{
    oldImplementation(e);
    console.log( e );
};