撤消/恢复从DOM中删除元素

Undo/Redo removing elements from DOM

本文关键字:删除 元素 DOM 恢复 撤消      更新时间:2024-02-22

我有一个应用程序,用户可以在其中绘制元素、删除元素、移动元素、调整大小等。我希望能够在不刷新页面的情况下撤消/重做应用程序中的几乎每一个操作。

例如,当我通过按退格键删除一个元素时,我希望能够通过按"CMD+Z"撤消该操作,并通过按"MD+Shift+Z"重做。

JS

// Remove selected element
$(window).keydown(function(e) {
  if (e.keyCode == 8) {
      $(".ui-selected").remove();
      return false;
  }
});

我需要一个解决方案,我几乎可以在应用程序中的每一个操作中重复使用。我不确定这是否会通知解决方案,但我正在使用jStorage将所有这些更改存储在本地存储中。

大多数情况下,这是使用命令模式完成的,其中对于每个"do"命令,"undo"命令都存储在一个数组中,并且前后遍历会调用这些命令。

http://jsperf.com/undo-redo有一个带有性能基准的撤消脚本列表。我一个都没用过,因为有一段时间我写的时候自己也很痒https://github.com/ArthurClemens/Javascript-Undo-Manager.