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

时间:2016-05-13 20:42:28

标签: ckeditor init destroy

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

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

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

我曾尝试过几种方法来解决这个问题,但没有办法可以解决。

我的方法

  • 使用TextArea
  • 创建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()仍按相同顺序调用。这次CKeditor再次没有显示任何内容。

上次尝试

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

有人可以帮我解决这个问题吗?

我正在使用CKeditor 4.5.8。

2 个答案:

答案 0 :(得分:1)

最后我想出了解决方案:

在隐藏ckeditor之前,请调用editor.destroy(true),然后删除编辑器。 (在此之前,我只调用了editor.destroy()[注意:没有'真'',但效果不佳)。

以下是代码:

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

答案 1 :(得分:0)

使用非常简单有效的java脚本代码。注意编辑器1是我的textarea id

<script>
  $(function () {
    CKEDITOR.timestamp= new Date();
    CKEDITOR.replace('editor1');
  });
</script>
第二种方式!在控制器中,当您的查询是从数据库获取数据时,请在.success(function()。

之后使用此代码
 $http.get(url).success(function(){
   CKEDITOR.replace('editor1');
});