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).
'Wenn (e.metaKey)' in Zeile 2 sollte sicherstellen, dass Control oder Command nicht aktiv sind. – ilpoldo
Ich funktioniere nicht, wenn Sie das Standardverhalten des Browsers irgendwo blockieren. – podperson