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

第二次之后无法在CKeditor中显示内容,ckeditor,init,destroy,Ckeditor,Init,Destroy,在我的项目中,Ckeditor是网页的一部分,该网页使用GWT编码。因此,CKeditor的接口使用Java 无论何时显示网页,CKeditor都会通过setData()向CKeditor传递一个HTML,CKeditor应该显示该HTML 问题是:CKeditor有时不会显示HTML。它的内容只是空的,尽管我非常确定html已经被传递到setData() 我试过几种方法来解决这个问题,但都不管用 我的方法 使用DOM.createTextArea() 调用myEditor=CKEDITOR.

在我的项目中,Ckeditor是网页的一部分,该网页使用GWT编码。因此,CKeditor的接口使用Java

无论何时显示网页,CKeditor都会通过
setData()
向CKeditor传递一个HTML,CKeditor应该显示该HTML

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

我试过几种方法来解决这个问题,但都不管用

我的方法
  • 使用
    DOM.createTextArea()
  • 调用
    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()
仍按相同顺序调用。这一次,编辑再次没有显示第二次的任何内容

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

谁能帮我解决这个问题


我正在使用CKeditor 4.5.8。

最后我找到了解决方案:

在隐藏ckeditor之前,调用editor.destroy(true)和delete编辑器。(在此之前,我只调用了editor.destroy()[注意:没有'true',],这不太好用)

代码如下:

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

使用这个非常简单有效的java脚本代码

<script>
  $(function () {
    CKEDITOR.timestamp= new Date();
    CKEDITOR.replace('editor1');
  });
</script>
 $http.get(url).success(function(){
   CKEDITOR.replace('editor1');
});