将多个撤消级别分组到TinyMCE中的批中

将多个撤消级别分组到TinyMCE中的批中,tinymce,Tinymce,我正在为TinyMCE编写一个自定义插件。其中一个新按钮在文档中执行许多DOM操作。默认撤消行为在更改的中间创建了一些撤销级别。如果用户在使用插件后点击“撤消”按钮,他/她会看到一个操作部分颠倒的文档,并且实际上没有处于正确的状态 看起来以前有一对名为mceBeginUndoLevel/mceendUndolevel(在版本3.3中删除)的实例命令,允许开发人员启动/结束一个大的撤消批处理,该批处理将在单个操作中撤消……但我在文档中没有看到任何替代该功能的内容 一些论坛帖子建议使用editor.

我正在为TinyMCE编写一个自定义插件。其中一个新按钮在文档中执行许多DOM操作。默认撤消行为在更改的中间创建了一些撤销级别。如果用户在使用插件后点击“撤消”按钮,他/她会看到一个操作部分颠倒的文档,并且实际上没有处于正确的状态

看起来以前有一对名为mceBeginUndoLevel/mceendUndolevel(在版本3.3中删除)的实例命令,允许开发人员启动/结束一个大的撤消批处理,该批处理将在单个操作中撤消……但我在文档中没有看到任何替代该功能的内容

一些论坛帖子建议使用editor.undoManager.add()作为替代,这适用于您希望在操作过程中执行更多级别的撤销操作,但实际上我需要更少级别的撤销操作的情况

还有一个undoManager.onBeforeAdd事件,您可以将其挂接,但是查看undoManager的源代码,我认为挂接该事件不会让您中止撤消快照


那么,有没有一种正确的方法可以批量撤销我在使用现有API时没有看到的操作呢?如果不是,我唯一的其他选择似乎是修补undoManager,以允许onBeforeAdd钩子中止快照。

我建议覆盖当前undoManager。这只是一个相当小的文件。
这就是我们需要做的,以抑制一些不必要的步骤的创建。

谢谢@Thariama,听起来您遇到了同样的问题。很高兴听到我不是一个不会阅读文档的傻瓜!在我的undoManager副本中有一个修补程序,如果向undoManager.onBeforeAdd事件注册的函数之一返回false,则该修补程序将中止撤消快照…这似乎有效。唯一的问题是,我不希望有一个自定义版本的TinyMCE源代码,以使未来的升级更容易。我理解你的担心,我们有相同的。但是我们没有修改tinymce的源代码。我们所做的只是在我们自己的插件末尾添加修改后的Undomanagercode,这使得激活/停用特殊的撤销处理变得更容易。