CKEditor - 在setData之后insertText无效

时间:2012-08-13 12:24:58

标签: javascript jquery ckeditor

我尝试使用setData(“”)清除内容后插入一些内容,然后使用insertText方法向其中插入内容。但内容仍然是空的。

相关代码:

CKEDITOR.instances.content.setData("");
CKEDITOR.instances.content.focus();
CKEDITOR.instances.content.insertText("the text I want to insert");

上面的代码不起作用。有人可以帮帮我吗? 找到另一种方法来清除CKEditor中的内容而不是使用setData(“”)或使setText方法在setData之后工作都有助于解决我的问题。 非常感谢!

4 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,但关键是setData()方法是异步的。如果您想在setData()之后运行某些内容,则必须创建callback method

var fooCallback = function(){
    CKEDITOR.instances.content.focus();
    CKEDITOR.instances.content.insertText("the text I want to insert");
};
CKEDITOR.instances.content.setData("", fooCallback);

答案 1 :(得分:1)

既不适合我。一定是个bug。但是有了jquery,就有了一种方法。

$('#content').val('the text I want to insert');

对于jquery适配器,请查看:http://ckeditor.com/blog/CKEditor_for_jQuery

答案 2 :(得分:1)

我遇到了同样的问题并找到了解决方案。在“清除”编辑器时,不要使用空字符串,而是使用CKEDITOR.yourEditor.setData('<span></span>')或(可能)其他等效的“有效html”,它不显示任何内容。我现在只用跨度试过这个。后续调用setData方法不会失败。 请享用。

答案 3 :(得分:0)

我遇到了同样的问题但是按照接受的解决方案的建议安装jquery适配器对我来说不是一个选择。

我能够在第二次调用时使用以下解决方法:

setTimeout(function(){
  CKEDITOR.instances["myEditor"].setData(newText);
}, 0);

我从这里得到了这个想法:https://dev.ckeditor.com/ticket/10663#comment:7