使用版本4.4.7
我的CKEDITOR加载到页面中打开的模态窗口中。我注意到当我重新打开模态时,编辑器不会加载。解决方案是销毁实例,然后在textarea上重新应用它。
但我似乎无法正确销毁它。基于this answer我尝试了以下所有尝试,但我一直收到错误:
def build(env, target, source):
old = target[0].get_stored_info()
old = old.binfo
old.prepare_dependencies()
old_bkids = old.bsources + old.bdepends + old.bimplicit
old_bkidsigs = old.bsourcesigs + old.bdependsigs + old.bimplicitsigs
osig = dict(zip(old_bkids, old_bkidsigs))
for src_file, info in osig.iteritems():
print str(src_file) + ' change status: ' + str(src_file.changed_since_last_build(target[0], info))
我尝试过以下内容(为了简单起见,我将所有尝试合并到一个代码块中,但它们是逐个尝试的):
TypeError: a is null
http://domaim/ckeditor/ckeditor.js
Line 778
更新
我发现只使用var editor = CKEDITOR.instances.mail_message;
if (editor) {
console.log('instance exists');
// ATTEMPT 1:
if (CKEDITOR.instances.mail_message) CKEDITOR.instances.mail_message.destroy();
// --------------------------------------
// ATTEMPT 2:
editor.destroy(true);
// -------------------------------------
// ATTEMPT 3:
CKEDITOR.instances.mail_message.destroy(false);
// --------------------------------------
// ATTEMPT 4:
for(name in CKEDITOR.instances)
{
CKEDITOR.instances[name].destroy()
}
// ---------------------------------------
console.log('destroyed');
}
// RECREATE: (but code errors out before this, with above-mentioned error.
CKEDITOR.replace('mail_message', { toolbar: 'basic' });
方法重新创建 - 即使没有先破坏。我想这是解决方案。
答案 0 :(得分:2)
当我想重新加载CKeditor时,我遇到了同样的问题,这段代码解决了我的问题。 要销毁旧实例,
if(CKEDITOR.instances.editor1)
CKEDITOR.instances.editor1.destroy();
我们将检查是否已创建实例。 要重新加载CKeditor,我们将使用
重新创建CKE对象 CKEDITOR.replace();
答案 1 :(得分:0)
如果你打算重新初始化编辑器,我肯定会想到将true作为参数传递给destroy。我有一个网格,我点击每一行以在jquery模式对话框中提取信息。除非我将“true”作为参数传递,否则我发现setData()不起作用,即使我我设置数据而我 还是破坏了之前的实例,旧数据出现在编辑器中。所以使用:
var editor = CKEDITOR.instances ['txt_LH_Update_Body']; if(editor){editor.destroy(true); }