如何在加载时将数据加载到CKEditor

5

不使用JQuery,能否将数据加载到CKEditor中?如果可能的话,我想使用内联脚本标签。我能找到的所有示例都涉及Jquery,但在我的情况下并不理想。

目前为止,我所拥有的只是从CKs网站上找到的示例:

CKEDITOR.instances.editor1.setData( '<p>Some other editor data.</p>', function()
    {
        this.checkDirty();  // true
    });

我曾尝试在内联脚本标签中使用它,但这会使编辑器崩溃。如果我在JQuery中使用它,它将按预期工作。


你能展示一些代码吗,这样回复起来会更容易些。 - Philemon philip Kunjumon
Philemon,我现在发布了所有我拥有的内容,但并不多。 - NaN
4个回答

17

以下是一个使用CKEDITOR API而不使用jQuery的示例。请注意替换函数的调用,该函数使用文本区域内容初始化CKEDITOR的"editor1"实例。我认为这将是最简单的在页面加载时填充内容的方式,但如果这样还不够,请注意我已经使用了您问题中的代码,以将CKEDITOR填充为“其他一些编辑器数据”。

HTML:

<textarea id="editor1">
    Hello, world!
</textarea>​

Javascript:


JavaScript:
CKEDITOR.replace( 'editor1', {
    toolbar: 'Basic',
    uiColor: '#9AB8F3'
});
CKEDITOR.instances.editor1.setData( '<p>Some other editor data.</p>', function()
{
    this.checkDirty();  // true
});

http://jsfiddle.net/cDzqp/


1
我知道已经过了几年,但这似乎对我不起作用,jsfiddler也不再起作用。我尝试将其更新为ckeditor 4.6.1,但仍然没有运气。(https://cdn.ckeditor.com/4.6.1/full-all/config.js?t=GB8C) - rmcsharry

5

我知道这个问题已经过时了,但是我刚刚找到了解决办法,我认为它更加简洁,所以在这里为将来可能遇到相同问题的人增添我的建议。

CKEditor会自动使用原始文本框中的内容来设置新文本框的内容。换句话说,只需要改变文本框的内容,然后再调用替换命令即可。这是代码:

document.getElementById("editor1").value = "<p>Some other editor data.</p>";
CKEDITOR.replace("editor1");

完成 :)

这个可能也有效,但是Patrick Jones的解决方案看起来是合法的。谢谢。 - Jitendra Sawant

1

如果有人在寻找将内容附加到现有内容的CKEditor解决方案,这将会有所帮助。- 我正在使用CKEditor 4.15.0

CKEDITOR.replace( 'editor1', {
toolbar: 'Basic',
uiColor: '#9AB8F3'});

CKEDITOR.instances.editor1.setData( CKEDITOR.instances.editor1.getData + 'New Content Here', function()
{
    this.checkDirty();  // true
});

根据Patrick Jones的回答,按照我的要求进行了修改

谢谢


-1

将输入数据转换为HTML以加载到编辑器中。虽然编辑器能够处理非HTML数据(如BBCode),但它只能在运行时处理HTML数据。数据处理器的作用是通过此函数将输入数据转换为HTML。

查看源代码

// Tranforming BBCode data, with a custom BBCode data processor available.
var data = 'This is [b]an example[/b].';
var html = editor.dataProcessor.toHtml( data ); // '<p>This is <b>an example</b>.</p>'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接