如何正确销毁CKEditor实例?

Sha*_*tle 26 javascript ckeditor

我在一个非常简单的页面上运行CKeditor 3.4.我有一个问题(有时),当我调用document.main_form.submit()时,它不会发送textarea的内容.经过一些阅读,听起来像CKeditor没有正确破坏.我在保存表单之前尝试手动销毁它,但无法调用它.奇怪的是,它有时会起作用,但不会起作用.我在Chrome上,因此可能会搞砸事情,但在Firefox中也会发生同样的事情.

如何正确销毁CKeditor,以便它始终在POST中发送textarea数据.谢谢!

Lar*_*mie 39

我有这个问题.太痛苦了.

要正确销毁编辑器实例,请尝试

if (CKEDITOR.instances.myInstanceName) CKEDITOR.instances.myInstanceName.destroy();
Run Code Online (Sandbox Code Playgroud)

这里的文档

我通过在回发之前将编辑器的内容分配到隐藏字段来解决了缺少的内容问题.我正在使用ASP.Net,但它应该普遍使用.

在提交按钮的客户端点击处理程序中,调用

if (CKEDITOR.instances.myInstanceName)
    document.getElementById('hiddenField').value = CKEDITOR.instances.getData();
Run Code Online (Sandbox Code Playgroud)

  • 我怎么知道'myInstanceName'是什么?这是编辑的ID吗? (3认同)

Ber*_*GGG 14

我曾经使用angularjs ui-router和每个子视图的一个CKEDITOR实例.每次加载ui-view时,我都使用以下解决方案来清除实例

for(name in CKEDITOR.instances)
{
    CKEDITOR.instances[name].destroy()
}
Run Code Online (Sandbox Code Playgroud)


Tom*_*ski 8

在我的情况

CKEDITOR.instances.myInstanceName.destroy();
Run Code Online (Sandbox Code Playgroud)

没有帮助,因为我jquery dialog在双击某个项目时打开了CKEditor .当我关闭编辑器然后再次打开它们时,我的代码崩溃了.
解决方案正在使

CKEDITOR.instances.myInstanceName.destroy(false);
Run Code Online (Sandbox Code Playgroud)

更新了DOM元素(链接到文档).


san*_*mar 6

使用这个简单的代码.注意我的文本区域id是editor1.
或者你也可以检查一下console.log(CKEDITOR.instances.editor1);

if (CKEDITOR.instances.editor1) {
     CKEDITOR.instances.editor1.destroy();
}
Run Code Online (Sandbox Code Playgroud)


小智 5

for(name in CKEDITOR.instances){ CKEDITOR.instances[name].destroy() }

用于编码以销毁ckeditor创建的所有实例