在插件命令中获取Inline CKEditor的当前实例

时间:2013-02-05 13:21:04

标签: javascript jquery ckeditor

我们最近离开了tinymce,我们在那里创建的自定义函数有一个工具栏按钮,一旦点击,就会在工具栏正上方滑动一个自定义div,它会在页面加载时附加到工具栏上。

现在的问题是在使用Inline版本时对CKEditor做同样的事情。由于任何时候都有十几个实例处于活动状态,如何在单击自定义插件按钮后获取当前弹出的内联Ckeditor的实例,以便我可以使用jQuery追加它?

使用最新版本的4.x of CKEditor。

4 个答案:

答案 0 :(得分:8)

很难想象你想要完成什么。无论如何,您可以观察哪个编辑器实例是关注的(您最终可以在一些变量中存储引用):

CKEDITOR.on( 'instanceReady', function( event ) {
    event.editor.on( 'focus', function() {
        console.log( 'focused', this );
    });
});

毕竟,您还可以浏览编辑器实例,因为它们存储在全局命名空间中的CKEDITOR.instances对象中。有了这个,您可以按名称,ID,任何内容(即之前与您的按钮相关联)找到您的实例。

答案 1 :(得分:2)

我会这样做

    var ck_instance_name = false;
    for ( var ck_instance in CKEDITOR.instances ){
        if (CKEDITOR.instances[ck_instance].focusManager.hasFocus){
            ck_instance_name = ck_instance;
            return ck_instance_name;
        }
    }

答案 2 :(得分:1)

获取ck编辑器的当前实例。这是简单的代码

var currentEditor;    
 for(var id in CKEDITOR.instances) {
  CKEDITOR.instances[id].on('focus', function(e) {
    // Fill some global var here
    currentEditor = e.editor.name;
});
}

答案 3 :(得分:0)

使用上面接受的答案我发现编辑"名称" (因为它已知)触发给定插件的编辑器实例可通过this._.editor.name (using CKEditor v4.3)

访问

因此,您可以这种方式检索编辑器内容。

CKEDITOR.instances[this._.editor.name].getData();