ckeditor - 第二次后无法在 CKeditor 中显示内容

标签 ckeditor init destroy

在我的项目中,Ckeditor 是使用 GWT 编码的网页的一部分。所以 CKeditor 的接口(interface)使用的是 Java。

每当显示网页时,CKeditor 将通过 setData() 传递给 CKeditor 应该显示的 HTML。

问题是:CKeditor 有时不会显示 HTML。它的内容只是空的,尽管我非常确定 html 已传递给 setData()

我曾尝试过多种方法来解决这个问题,但没有一种可行。

我的方法

  • 使用 DOM.createTextArea() 创建一个 TextArea
  • 调用myEditor=CKEDITOR.replace(textArea, config)初始化CKeditor
  • 调用myEditor.setData(html)设置内容。

很好,第一时间展示了内容。

但是在网页被隐藏并再次显示后,我调用了 myEditor.setData(html2) 来显示另一个 html,但是这次 CKeditor 什么也没显示。

第一个解决方案(没用)

我修改了代码,在网页隐藏前调用myEditor.destroy(),当网页可见时再次调用CKEDITOR.replace(textArea, config)再次,之后我调用了 myEditor.setData(newHtml)

这次它在 IE 和 FF 中有效,但在 Chrome 和 Edge 中无效,它一直显示第一次加载时的内容,而不是显示新的 HTML。

第二种解决方案(没用)

当网页再次可见时,我将其更改为调用 CKEDITOR.inline(textArea, config) 而不是 CKEDITOR.replace(textArea, config) ,而 destroy()setData() 仍然以相同的顺序被调用。这次 CKeditor 第二次没有显示任何内容。

最后一次尝试

我最后的方法是不调用 destroy(),而是在每次显示 CKeditor 之前创建一个新的 TextArea,并调用 CKEDITOR.replace(textArea,配置)setData(html)。这似乎工作得很好,但偶尔 CKeditor 仍然显示空内容。

谁能帮我解决这个问题?

我正在使用 CKeditor 4.5.8。

最佳答案

最后我想出了解决办法:

隐藏ckeditor前调用editor.destroy(true),删除editor。 (在此之前,我只调用了 editor.destroy() [注意:没有'true'],效果不佳)。

代码如下:

    if (editor) {
        editor.destroy(true);
        delete editor;
    }

关于ckeditor - 第二次后无法在 CKeditor 中显示内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37219035/

相关文章:

ruby-on-rails - 销毁 rails 4 中的嵌套字段

c# - 对象销毁和空链接

ruby-on-rails - 跟踪被破坏的对象

php - CKEditor PHP 集成

nginx - 对于像 supervisord 这样的进程 Controller ,RHEL init.d 脚本中的 chkconfig 行应该设置为什么?

jquery-ui - CKEditor 排序时丢失内容

Flutter Stateful Widget 状态未初始化

swift - 在 Swift 中进行子类化时理解 init()

javascript - 禁用 CKEditor 中的对话框

javascript - 如何在浏览器中渲染时格式化 TeX 表达式?