尝试在http://ckeditor.com/demo上输入源模式来调试使用
控制台中的CKEDITOR.instances["editor1"].on("key", function(e) {console.log("change: " + e.editor.getData())})
我总是在控制台中看到一个字符少,所以如果我输入abc
,我会看到ab
注意:因https://dev.ckeditor.com/ticket/12031Guidelines而使用关键事件 和 How to detect CKEditor source mode on change event
答案 0 :(得分:2)
在我的分析中写下详细的答案。
正如我之前所说,即使在将关键笔划记录为编辑器中文本的一部分之前,也会获取getData()。这就是为什么你看到以前的数据(按键之前的数据)
由于暴露了极少的代码,我无法帮助您解决当前的情况。我不确定你是如何使用它的,以及它们主张的是什么。
但是,我会在我的分析中发布 - 我创建了一个waitfunc(),它只为5secs设置了超时。我这样做是为了观察密钥是先记录在编辑器中还是首先记录数据。
function waitfunc() {
setTimeout(function() {
console.log("wait")
}, 5000)
}
CKEDITOR.instances["editor1"].on("key", function(e) {
waitfunc();
console.log("change: " + e.editor.getData());
waitfunc();
})
我看到数据首先被采用。然后添加新的按键作为编辑器的一部分。我在段落的末尾添加了“c”。
所以,请看一下代码(代码行的顺序或其他)。如果可能,分享更多代码,我可以提供更多帮助。
希望它有所帮助。
答案 1 :(得分:0)
我的理解是"key"
事件与javascript中的onkeydown
类似,因此查看编辑器关键按下的内容意味着在添加字符之前查看它。您应该查看"keyup"
事件,该事件在内容被更改后触发。很像setTimeout
解决方案,但更多一点"正确"。
请在此处查看very similar question和代码示例