Sempre quis oferecer suporte para desfazer / refazer em seu aplicativo JS?
Eu fiz, então escrevi um CommandManager que suporta a execução, não execução e reexecução de comandos.
Experimente a demonstração: http://alexanderbrevig.github.com/CommandManager.js/examples/
CommandManager.execute({
execute: function(){
// do something
},
unexecute: function(){
// undo something
}
});
//call unexecute of prev. command
CommandManager.undo();
//call execute of prev. command
CommandManager.redo();