【发布时间】: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。
【问题讨论】: