在我的项目中,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/