4

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

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

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

4

4 回答 4

8

很难想象你想要完成什么。无论如何,您可以观察哪个编辑器实例被聚焦(您最终可以将引用存储在某个变量中):

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

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

于 2013-02-05T16:21:18.467 回答
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;
        }
    }
于 2013-09-05T13:51:23.263 回答
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;
});
}
于 2014-06-26T04:23:44.553 回答
0

使用上面接受的答案,我发现触发给定插件的编辑器实例的编辑器“名称”(众所周知)可以通过以下方式访问this._.editor.name (using CKEditor v4.3)

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

CKEDITOR.instances[this._.editor.name].getData();
于 2014-03-23T04:16:20.733 回答