CKEditor 4或以上
我有表单> textarea,启用了CKEditor并运行。
我在模式对话框中有iframe,在iframe按钮中有insert_media() javascript函数。
function insert_media( element ) {
// get element html decode
element = htmlspecialchars_decode( element, 'ENT_QUOTES' );
// htmlspecialchars_decode is external function.
// CKEditor insert element ---------------------------------------------
// use .insertElement()
var CKEDITOR = window.parent.CKEDITOR;
var element = CKEDITOR.dom.element.createFromHtml(element);
// body_value is name of textarea
// this code only works with specific textarea NOT current active textarea
//CKEDITOR.instances.body_value.insertElement(element);
var current_instance_ckeditor = window.parent.test_current();
// CKEditor insert element ---------------------------------------------
// close modal dialog at parent window
window.parent.close_dialog();
// done
return false;
}// insert_media这是主页html中的javascript。
function close_dialog() {
$('#media-modal').modal('hide');
}// close_dialog
function test_current() {
console.log( CKEDITOR.currentInstance.name );
}问题是,I无法使当前的active CKEditor使用insertElement命令插入元素。
CKEDITOR.currentInstance是未定义或空的。
window.parent.CKEDITOR.currentInstance是未定义或空的。
如何从iframe中获取当前活动CKEditor?
测试文件:http://www.megafileupload.com/en/file/420060/test-ckeditor-zip.html
发布于 2013-05-23 15:21:18
如果CKEDITOR.currentInstance是null/undefined,那么没有一个编辑器实例是活动的。这意味着你把焦点从编辑转移到了不被认可的地方。
但是,如果您使用的是CKEditor的对话框(是吗?)当打开该对话框时,编辑器实例应该始终处于活动状态。如果这是你的情况,那么你需要给我们一个工作的例子,因为它很难猜测什么可能是错误的。
第二个选项是,您不使用CKEditor的对话框,然后您必须负责将该对话框注册到CKEditor的focusManager,尽管这很棘手,所以您不应该在CKEditor中使用第三方的对话框。
编辑当我点击“测试”按钮时,test_current函数可以正常工作,但是编辑器必须有重点。但是,从你点击按钮的那一刻起,200毫秒以后,编辑器就会变得模糊,你将无法从currentInstance获得它。为了避免在单击按钮时模糊编辑器,您需要在focusManagers中注册它(如果同时使用这两个编辑器,则两个编辑器都注册)。
发布于 2013-09-05 13:52:27
我会这样做
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-06 18:33:54
正如Reinmar所说,CKEditor是空/未定义的。
现在,我可以找到使用当前实例的方法,即使您单击了CKEditor外部。
这是供测试的示例文件。http://www.megafileupload.com/en/file/448409/test-ckeditor-zip.html
我所做的就是..。
var parent_cke_current_id = window.parent.current_instance_id;)CKEDITOR.instances[parent_cke_current_id].insertElement(element);)谢谢Reinmar。
https://stackoverflow.com/questions/16716642
复制相似问题