Обратил внимание на то, что в режиме ContentEditable действия, выполняемые с помощью execCommand, можно отменить с помощью той же execCommand("undo"). А действия, выполненные с помощью модификации DOM напрямую, нельзя отменить.
Однако одна лишь execCommand меня соврешенно не устраивает.
Нет ли какой-то функции в JavaScript, которая "сохраняет состояние" перед модификацией DOM и добавляет его в Undo стеку, с тем чтобы затем стандартной командой document.execCommand("undo") отменить эти изменения.
Писать undo stack вручную не предлагайте, точно не буду, проще вообще забить на это.