【问题标题】:Could not show content in CKeditor after the second time第二次后无法在 CKeditor 中显示内容
【发布时间】:2016-07-25 18:19:12
【问题描述】:

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

每当显示网页时,CKeditor 将通过setData() 传递一个 HTML,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, config)setData(html)。这似乎运作良好,但偶尔 CKeditor 仍然显示空内容。

谁能帮我解决这个问题?

我正在使用 CKeditor 4.5.8。

【问题讨论】:

    标签: ckeditor init destroy


    【解决方案1】:

    终于找到了解决办法:

    在隐藏 ckeditor 之前,调用 editor.destroy(true),删除编辑器。 (在此之前,我只调用了 editor.destroy() [note: no 'true'],效果不佳)。

    代码如下:

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

    【讨论】:

      【解决方案2】:

      使用这个非常简单有效的java脚本代码。注意editor1是我的textarea id

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

      第二种方法!在控制器中,当您的查询是从数据库中获取数据时,然后在 .success(function() 之后使用此代码。

       $http.get(url).success(function(){
         CKEDITOR.replace('editor1');
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-18
        • 2013-05-16
        • 1970-01-01
        相关资源
        最近更新 更多