2021年9月26日: 对于那些对重做/撤销功能感兴趣的人来说,你必须基本上保留你正在编辑的 DOM 部分的文本版本。当然,可能还有其他方法来实现它,尽管这些方法会非常复杂。您基本上只需使用 .cloneNode复制编辑器父元素,然后在内存中使用类似于 while (e.firstChild) {xml += new XMLSerializer().serializeToString(e.firstChild);}的内容。因为将它存储为文本,所以它不会像 DOM 那样具有巨大的内存影响。您将逐字地替换编辑器中的整个 DOM,并跟踪变更的每一次迭代,因此它仍然是一个庞大的项目。对于我的平台来说,现在没有必要这么做,尽管有些人已经在评论中提到了,我还是想谈谈这个问题。