【问题标题】:Remove all CKEditor instances删除所有 CKEditor 实例
【发布时间】:2012-07-26 02:55:06
【问题描述】:

我有一个表格,其中我有 CKEditor 替换我的<textarea>s(多个)。我想在提交表单之前从页面中删除所有 CKEditor 实例。我怎样才能做到这一点?

我查看了Remove CKEdit Instance,但它对我没有任何帮助。

注意:我所有的 CKEditor 都有一个“ckedit”类

【问题讨论】:

  • 小问题,你为什么需要这样做?
  • 我发布这个已经 3 年了,我已经不记得我需要它了。一定是有原因的……
  • 是的,我遇到了这样的解决方案,但不知道为什么要实现它,因为它可以正常工作而无需先破坏它

标签: javascript jquery ckeditor


【解决方案1】:

这将销毁页面上的所有 CKEDITOR 实例:

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

【讨论】:

  • 供未来人们搜索。这很好用,但是当我尝试重新加载时,我收到一个错误,说 i.contentWindow 为空。谷歌搜索后,我发现通过传递 true 来销毁该错误会消失
  • 给出错误:TypeError: a is null ....getDocumentElement().clearCustomData();a.clearCustomData();CKEDITOR.tools.remove...
  • 如果出现错误,试试这个:for(var a in CKEDITOR.instances){CKEDITOR.remove(CKEDITOR.instances[a]);}
  • @Serban 这完全错了。您只是将它从编辑器实例列表中删除,但整个对象将保留在内存中,最终会导致巨大的内存泄漏。
  • @AlfonsoML 不幸的是,似乎没有其他东西对我有用。您的代码出现以下错误:未捕获的 TypeError:无法读取 null 的属性“clearCustomData”。当我尝试从实例列表中销毁单个编辑器时(使用 CKEDITOR.instances['inputProjectTarget8391'].destroy(); )我得到这个: Uncaught TypeError: Cannot read property 'document' of undefined.
【解决方案2】:

你可以在提交之前使用jquery的.remove()。

【讨论】:

  • 但这不会删除整个
  • 那些ckeditor实例,它们有ID吗?像 Ids 的共同模式? ck1, ck2..类似这样的东西;
  • 不,很遗憾他们没有。我已经考虑过循环每个元素,但目前我没有时间重写该代码。我只有一个类'ckedit'没有别的:(
  • 好的,这些实例,它们是否有任何值,例如 null 或其他什么......如果它们有一些值,那么您可以遍历所有实例并使用此 .val() 方法获取每个实例的值jquer 的值,如果值是什么,那么您可以删除这些实例???
  • 没有重复值,也没有我可以循环遍历的属性。是否可以使用 jquery.each 循环思考每个元素并使用 $(this) 以某种方式删除实例?
【解决方案3】:

你有没有试过……

delete CKEDITOR;

我有类似的情况,这对我有用。只需确保在下次需要使用它时重新创建它。否则,请尝试保留您创建的所有实例的 id 数组,然后遍历该数组并将它们全部销毁。

【讨论】:

  • 请尝试删除此答案,确保没有人使用此声明
猜你喜欢
  • 2014-03-25
  • 2015-08-24
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 2020-02-02
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
相关资源
最近更新 更多