javascript 在插件命令中获取内联CKEditor的当前示例

y1aodyip  于 2023-02-18  发布在  Java
关注(0)|答案(4)|浏览(120)

我们最近离开了tinymce,我们在那里创建了一个自定义函数,它是一个工具栏按钮,一旦点击,就会在工具栏的正上方滑动一个自定义div,在页面加载时,这个div会被附加到工具栏上。
现在的问题是在使用内联版本时对CKEditor做同样的事情。由于在任何时候都有十几个示例处于活动状态,我如何获取当前弹出的内联Ckeditor的示例,以便在单击自定义插件按钮后用jQuery追加到它上面?
使用CKEditor的最新版本4.x。

kiz8lqtg

kiz8lqtg1#

很难想象你要做什么,不管怎样,你可以观察到哪个编辑器示例被聚焦(你最终可以在某个变量中存储一个引用):

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

毕竟,你也可以浏览编辑器示例,因为它们存储在全局名称空间的CKEDITOR.instances对象中,这样,你就可以通过名称、id或任何东西(例如,之前与你的按钮相关联的)找到你的示例。

ndasle7k

ndasle7k2#

我会这样做

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;
    }
}
ilmyapht

ilmyapht3#

获取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;
});
}
6xfqseft

6xfqseft4#

使用上面接受的答案,我发现触发给定插件的编辑器示例的编辑器“name”(众所周知)可以通过this._.editor.name (using CKEditor v4.3)访问
因此,您可以通过这种方式检索编辑器内容。

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

相关问题