在我的项目中,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。
答案 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');
});