undo / redo事件绑定

时间:2010-11-24 11:59:35

标签: jquery html5

我找到了一些有趣的javascript撤消管理器 - 当然 - 我们有一个最终将在浏览器中用HTML5实现。

现在,我不确定的是如何捕获用于触发'undo'的用户操作以使用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区域)。

1 个答案:

答案 0 :(得分:0)

我认为你不能触发默认的浏览器事件......

考虑到使用array来存储特定时间的击键。 e.g。

如果我键入“hello world”,或者如果我继续输入,则继续记录字符。当用户停止输入超过一秒钟时,然后将其推送到一个阵列,以便您可以更好地控制更改。

另一件事是,这是一种不好的感觉。但我确定26和122不代表ctrl + z,最有可能是它自己或控件。