我想构建一个使用撤销重做功能的基于 Electron 的应用程序。现在可以在菜单中放置撤消/重做条目,并根据 Electron 中已经存在的角色进行操作。 role: undo + role: redo。如图所示here

因此,我已经发现可能正在发生的事情是,如果我单击“撤消” -MenuItem,就会调用webContents.undo()

现在我的问题是,调用此撤消操作后会发生什么?我可以以某种方式注册监听器并自己处理撤消吗?还是最好的做法是不使用'undo'角色而是定义自定义菜单项并自己处理所有事情?

也许有一些关于 Electron Chrome 浏览器如何处理这些撤消事件的规范,以及在何处可以捕获此事件并定义我自己应该在撤消/重做时发生的 Action 的规范。

最佳答案

我认为您应该定义一个自定义菜单项并自己处理。

我不认为您可以注册监听器并在那里处理它,因为 webContents 文档中没有任何事件。

菜单项将是这样的:

{
    label:       'Undo',
    accelerator: 'CmdOrCtrl+Z',
    click:       function (menuItem, focusedWin) {
        // Undo.
        focusedWin.webContents.undo();

        // Run some custom code.
    }
}

10-07 22:04