2010-11-24 34 views
0

Ich habe einige interessante Javascript-Undo-Manager gefunden und -natürlich- wir haben die eine, die irgendwann im Browser mit HTML5 implementiert wird.undo/redo event binding

Nun, was ich nicht sicher bin, ist, wie Benutzeraktionen erfassen auslösen soll ‚rückgängig machen‘ mit jQuery die UndoManager zu fahren:

  • Strg + Z, Strg + Umschalt + Z
  • cmd + Z, cmd + Shift + Z
  • Benutzerklick auf das Bearbeiten> Rückgängig oder Bearbeiten> Wiederherstellen Menü in ihren Browsern

Meine erster Stich an, es sei dies:

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); 

aber wie stelle ich sicher, dass die (moderne) Browser-Menü Bearbeiten mit dem Programm Schritt hält?

Ich möchte wirklich nicht, dass der Browser versucht herauszufinden, was und wie man in dieser Region rückgängig machen oder zumindest keine Bearbeitung daran vornehmen kann (es ist eine contenteditable = true Region).

Antwort

0

Das glaube ich nicht, dass Sie Standard-Browser Ereignisse auslösen können ...

, die ein array im Auge jemals Tastendruck einer bestimmten Zeit zu speichern, verwenden. z.B.

Wenn ich "Hallo Welt" eintippe, die in einer Sekunde oder wenn ich weiter schreibe weiter die Zeichen aufzeichnen. Wenn die Benutzer aufhören mehr als eine Sekunde zu tippen, dann drücken Sie sie in ein Array, so dass Sie mehr Kontrolle über die Änderungen haben.

ist eine andere Sache, dass dies ein schlechtes Gefühl ist. aber ich bin sicher, dass 26 und 122 nicht für Strg + z steht wahrscheinlich ist es für die es selbst oder die Kontrolle.

+0

'Wenn (e.metaKey)' in Zeile 2 sollte sicherstellen, dass Control oder Command nicht aktiv sind. – ilpoldo

+0

Ich funktioniere nicht, wenn Sie das Standardverhalten des Browsers irgendwo blockieren. – podperson