Javascript ckeditor getData()在源模式下返回过时数据(缺少最后一次更改)

Javascript ckeditor getData()在源模式下返回过时数据(缺少最后一次更改),javascript,ckeditor,Javascript,Ckeditor,尝试在源模式下键入以调试使用 CKEDITOR.instances[“editor1”].on(“key”,函数(e){console.log(“change:+e.editor.getData())})在控制台中 我总是在控制台中看到少一个字符,因此如果我键入了abc我会看到ab 注意:使用键事件是因为 和 在这里写一个详细的答案,并附上我的分析 正如我前面所说的,甚至在将键笔划记录为编辑器中文本的一部分之前,就已经提取了getData()。这就是为什么您会看到以前的数据(按键前的数据) 我无

尝试在模式下键入以调试使用
CKEDITOR.instances[“editor1”].on(“key”,函数(e){console.log(“change:+e.editor.getData())})
在控制台中

我总是在控制台中看到少一个字符,因此如果我键入了
abc
我会看到
ab

注意:使用键事件是因为 和
在这里写一个详细的答案,并附上我的分析

正如我前面所说的,甚至在将键笔划记录为编辑器中文本的一部分之前,就已经提取了getData()。这就是为什么您会看到以前的数据(按键前的数据)

我无法在当前情况下为您提供太多帮助,因为暴露的代码非常少。我真的不知道你是如何使用它的,什么样的线主持它

但是,我将在我的分析中发布- 我创建了一个waitfunc(),它只将超时设置为5秒。我这样做是为了观察是先在编辑器中记录键还是先获取数据

function waitfunc() {
    setTimeout(function() {
        console.log("wait")
    }, 5000)
}

CKEDITOR.instances["editor1"].on("key", function(e) {
    waitfunc();
    console.log("change: " + e.editor.getData());
    waitfunc();
})
我看到数据是先采集的。然后,新按下的键被添加为编辑器的一部分。我在这一段的末尾加了“c”

所以,请看一下代码(代码行的顺序或其他)。如果可能的话,分享更多的代码,我可以提供更多的帮助


希望有帮助。

我的理解是,
“key”
事件类似于javascript中的
onkeydown
,因此在key down上查看编辑器的内容意味着在添加字符之前查看它。您应该查看
“keyup”
事件,该事件在内容更改后触发。很像
setTimeout
解决方案,但更“合适”


请参见此处的代码示例

我检查了一次代码。我同意工作是不同的。它显示一个比当前实例早的实例。我可以看看getData()的实现吗?我的感觉是,在允许对编辑器进行更改之前,您就试图从编辑器中获取数据。我正在使用ng ckeditor使其与我的angular编辑器一起工作。ng ckeditor在内部使用getData()。很高兴知道我的分析有帮助:)请将其标记为答案(勾号),这样问题看起来就解决了。