CKEditor是否为“更改”提供了属性。事件是由鼠标与键盘触发的?
在改变内部的同时,'事件调用,我需要看看事件是如何被触发的。在我的情况下,我有一个脚本可以更改内容区域,需要对其执行操作,但不是在键盘导致更改时。
答案 0 :(得分:1)
不,没有这样的信息。 editor#change
事件只是CKEditor撤消管理器的副作用,在某些情况下甚至可能在没有任何改变时触发(文档提到这一点)。这听起来很奇怪,但有很好的理由说明它的工作原理。
有许多变化来源 - 鼠标,键盘,粘贴(粘贴内容的方法有很多种),剪切,工具栏中的按钮,editor.setData
调用以及外部代码通过命令所做的全部更改,也直接在编辑器的可编辑元素中。换句话说 - 听不到所有这些是不可能的,因为没有事件代表所有这些"切入点"。
因此,您可以认为编辑的撤消管理员至少可以听取键盘事件或拖放事件并记录这些更改(并使用该信息激发change
事件)。不。例如,剪贴板插件会侦听本机粘贴事件并将其转换为更有用的editor events。这些事件具有侦听器,然后将内容插入编辑器或将其删除(在剪切的情况下)。如果撤消管理器直接粘贴并使用编辑器事件取消粘贴,则撤消管理器会感到困惑。相反,撤消管理器期望它将被通知可能的更改。这是通过editor#saveSnapshot
事件发生的。当某段代码知道它改变了内容时,它应该触发这些事件(在更改之前和之后)。
这就是为什么有关变更来源的信息丢失的原因。它之间有很长的事件链。此外,在许多情况下,目前尚不清楚其来源是什么。