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