2010-11-24 80 views
0

我發現了一些有趣的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區域)。

回答

0

我不認爲你可以觸發默認瀏覽器事件...

考慮到這一點使用array存儲以往按鍵的特定時間。例如

如果我在一秒鐘內輸入「hello world」,或者如果我繼續打字,請繼續錄製字符。當用戶停止輸入超過一秒鐘時,然後將其推到一個數組,以便更好地控制更改。

另一件事是,這是一種不好的感覺。但確保26和122不代表ctrl + z最有可能是它自己或控制。

+0

`第2行if(e.metaKey)`應確保控制或命令關閉。 – ilpoldo 2010-11-24 19:14:09