0

我需要捕捉删除/退格按钮的 keydown 事件。问题是插入符号位于标记/块的开头或结尾时。在这一刻,我需要抓住前一个/下一个块/标签的字母。

但是首先我不知道如何将我的范围移动到前一个块的最后一个字母?我已经尝试使用以下方法移动它:

var element = range.getPreviousNode(); // This returns a Text-Node
range.moveToElementEditablePosition(element,true); // This gives a error

错误 sais: TypeError: h is null ckeditor.js(line 364) 但我认为这是因为你不能将焦点移到文本节点上?

问题是,如何才能捕捉到即将删除的字母?无需中断 CKEDITOR 工作流程。这样我就不必构建在块/标签之间切换的逻辑。

4

1 回答 1

0

存储editor.edtaible().getText()在每个key事件上,并使用一些 diff 算法将其与先前的值进行比较。这个感觉不错:https ://code.google.com/p/google-diff-match-patch/

原因是在某些情况下,退格/删除会删除多个字母,例如当插入符号位于某个块元素之后(整个块将消失)或选择了很多文本。此外,CKEditor 中的插入符号定位系统是不可预测的(浏览器是错误的和不可预测的),您的方式可能会导致您陷入困境。

于 2013-02-27T09:53:33.527 回答