我们最近离开了 tinymce,我们在那里创建了一个自定义函数,其中有一个工具栏按钮,一旦单击该按钮,就会在工具栏正上方滑动一个自定义 div,该按钮会在页面加载时附加到工具栏上。
现在的问题是在使用 Inline 版本时对 CKEditor 做同样的事情。由于任何时候都有十几个处于活动状态的实例,在单击自定义插件按钮后,如何获取当前弹出的内联 Ckeditor 的实例以便我可以使用 jQuery 附加到它?
使用最新版本的 CKEditor 4.x。
我们最近离开了 tinymce,我们在那里创建了一个自定义函数,其中有一个工具栏按钮,一旦单击该按钮,就会在工具栏正上方滑动一个自定义 div,该按钮会在页面加载时附加到工具栏上。
现在的问题是在使用 Inline 版本时对 CKEditor 做同样的事情。由于任何时候都有十几个处于活动状态的实例,在单击自定义插件按钮后,如何获取当前弹出的内联 Ckeditor 的实例以便我可以使用 jQuery 附加到它?
使用最新版本的 CKEditor 4.x。
很难想象你想要完成什么。无论如何,您可以观察哪个编辑器实例被聚焦(您最终可以将引用存储在某个变量中):
CKEDITOR.on( 'instanceReady', function( event ) {
event.editor.on( 'focus', function() {
console.log( 'focused', this );
});
});
毕竟,您还可以浏览编辑器实例,因为它们存储CKEDITOR.instances
在全局命名空间的对象中。有了这个,您可以通过名称、id、任何东西(即以前与您的按钮相关联)找到您的实例。
我会这样做
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;
}
}
获取 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;
});
}
使用上面接受的答案,我发现触发给定插件的编辑器实例的编辑器“名称”(众所周知)可以通过以下方式访问this._.editor.name (using CKEditor v4.3)
因此,您可以通过这种方式检索编辑器内容。
CKEDITOR.instances[this._.editor.name].getData();