在内联模式下使用CKEditor时,何时可以确保编辑器已完全就绪?

时间:2014-05-30 02:41:04

标签: ckeditor

我正在使用带有CKEDITOR.disableAutoInline = true的CKEditor。

然后我致电inlineAll()以内联所有contenteditable

之后,我立即从编辑器中获取数据:

CKEDITOR.inlineAll();
var editor = ... //get the editor instance
console.log(editor.getData());

问题是CKEDITOR更改了标记,而我使用getData()获得的标记是在更改之前。

这就是内容标记的样子:

<p>test<a href="test.com">aaa</a>test test<a href="test.com">bbb</a>test</p>
<p>test asdf</p>
<a href="http://google.com" target="_blank">link</a>
<p>test</p>
<a href="http://google.com">link</a>
<p>test</p>

CKEDITOR修改标记,以便<a> s在他们自己的段落中:

<p>test<a href="test.com">aaa</a>test test<a href="test.com">bbb</a>test</p>
<p>test asdf</p>
<p><a href="http://google.com" target="_blank">link</a></p>
<p>test</p>
<p><a href="http://google.com">link</a></p>
<p>test</p>

问题是我使用getData()收到的标记是修改前的标记。

我可以做些什么来确保CKEditor准备好并且来自getData()的标记是最新的标记?

1 个答案:

答案 0 :(得分:0)

editor.status属性和editor#instanceReady事件。触发事件后,状态将更改为'ready'。在该编辑器返回缓存的可编辑元素innerHTML而不是处理过的数据之前。

因此,如果您想确保获得真实数据,那么您需要检查状态并等待实例准备就绪(如果尚未准备好)。