Jquery 撤消/重做事件绑定

Jquery 撤消/重做事件绑定,jquery,html,Jquery,Html,我发现了一些有趣的javascript撤销管理器,当然,我们有一个最终将在浏览器中使用HTML5实现的撤销管理器 现在,我不确定的是,如何捕获用户操作,以便使用jQuery触发“撤销”,从而驱动UndoManager: Ctrl+Z,Ctrl+Shift+Z Cmd+Z,Cmd+Shift+Z 用户在浏览器中单击“编辑>撤消”或“编辑>重做”菜单 我的第一个尝试是: function keypress(e){ if (e.metaKey) { Collage.console(e)

我发现了一些有趣的javascript撤销管理器,当然,我们有一个最终将在浏览器中使用HTML5实现的撤销管理器

现在,我不确定的是,如何捕获用户操作,以便使用jQuery触发“撤销”,从而驱动UndoManager:

  • Ctrl+Z,Ctrl+Shift+Z
  • Cmd+Z,Cmd+Shift+Z
  • 用户在浏览器中单击“编辑>撤消”或“编辑>重做”菜单
我的第一个尝试是:

function keypress(e){
  if (e.metaKey) {
    Collage.console(e);
    switch(e.keyCode){
    case 122: // Mac
      if (e.shiftKey) {
        undoManager.redo(e);
      } else {
        undoManager.undo(e);
      }
    case 26: // PC
      if (e.shiftKey) {
        undoManager.redo(e);
      } else {
        undoManager.undo(e);
      }
    }
  }
};

$('#my-thing-with-undos').bind('keypress', keypress);
但是如何确保(现代)浏览器的“编辑”菜单与程序保持同步


我真的不希望浏览器试图找出在该区域中撤消什么以及如何撤消,或者至少不对其执行编辑(这是一个
contenteditable=true
区域)。

我认为您无法触发默认浏览器事件

记住,使用
数组
存储特定时间的任何击键。e、 g

如果我在一秒钟内键入“hello world”,或者如果我继续键入,请继续记录字符。当用户停止输入超过一秒钟,然后将其推送到数组中,这样您就可以更好地控制更改


另一件事是,这是一种不好的感觉。但我确信26和122并不代表ctrl+z,很可能是代表z-it本身或控件。

if(e.metaKey)
第2行应该确保控件或命令处于关闭状态。除非您在某个地方阻止浏览器的默认行为,否则这不起作用。