Ckeditor 当';改变';事件是由鼠标和键盘触发的?

Ckeditor 当';改变';事件是由鼠标和键盘触发的?,ckeditor,Ckeditor,CKEditor是否提供鼠标与键盘触发“更改”事件的时间属性 在“更改”事件调用中,我需要查看事件是如何触发的。在我的例子中,我有一个脚本可以更改内容区域,需要对此采取行动,但不是在键盘导致更改时。不,没有这样的信息。该事件只是CKEditor的undo manager的副作用,在某些情况下,甚至可能在没有任何更改时触发(文档中提到了这一点)。这听起来很奇怪,但有很好的理由说明它是这样工作的 更改的来源很多—鼠标、键盘、粘贴(粘贴内容的方法很多)、剪切、工具栏中的按钮、editor.setDat

CKEditor是否提供鼠标与键盘触发“更改”事件的时间属性


在“更改”事件调用中,我需要查看事件是如何触发的。在我的例子中,我有一个脚本可以更改内容区域,需要对此采取行动,但不是在键盘导致更改时。

不,没有这样的信息。该事件只是CKEditor的undo manager的副作用,在某些情况下,甚至可能在没有任何更改时触发(文档中提到了这一点)。这听起来很奇怪,但有很好的理由说明它是这样工作的

更改的来源很多—鼠标、键盘、粘贴(粘贴内容的方法很多)、剪切、工具栏中的按钮、
editor.setData
调用以及外部代码通过命令进行的所有更改,也可以直接在编辑器的可编辑元素中进行。换句话说,不可能听到所有这些,因为没有代表所有这些“入口点”的事件

因此,您可以认为编辑器的撤消管理器至少可以侦听键盘事件或拖放事件并记录这些更改(还可以使用该信息触发
change
事件)。不。例如,剪贴板插件侦听本机粘贴事件并将其转换为更有用的事件。这些事件具有侦听器,这些侦听器随后将内容插入编辑器,或将其删除(在剪切的情况下)。如果“撤消管理器”直接侦听“粘贴”,并使用编辑器事件取消粘贴,则“撤消管理器”会感到困惑。相反,撤消管理器希望收到有关可能更改的通知。这是通过事件发生的。当某段代码知道它更改了内容时,它应该触发这些事件(更改前后)


这就是关于变更来源的信息丢失的原因。两者之间有一长串的事件。另外,在许多情况下,不清楚来源是什么。

回答得很好,谢谢你的详细解释!