4

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

相关代码:

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

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

4

4 回答 4

5

我遇到了同样的问题,但关键是该setData()方法是异步的。如果你想在之后运行一些东西setData(),你必须创建一个回调方法

var fooCallback = function(){
    CKEDITOR.instances.content.focus();
    CKEDITOR.instances.content.insertText("the text I want to insert");
};
CKEDITOR.instances.content.setData("", fooCallback);
于 2014-05-22T07:20:01.480 回答
1

也不适合我。一定是个bug。但是使用 jquery 有一种方法。

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

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

于 2012-08-17T06:24:11.997 回答
1

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

于 2013-01-14T11:12:58.887 回答
0

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

在第二次通话中,我能够使用以下解决方法使其工作:

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

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

于 2015-11-08T03:29:12.307 回答