Здравствуйте, x-code, Вы писали:
XC>Обратил внимание на то, что в режиме ContentEditable действия, выполняемые с помощью execCommand, можно отменить с помощью той же execCommand("undo"). А действия, выполненные с помощью модификации DOM напрямую, нельзя отменить.
XC>Однако одна лишь execCommand меня соврешенно не устраивает.
XC>Нет ли какой-то функции в JavaScript, которая "сохраняет состояние" перед модификацией DOM и добавляет его в Undo стеку, с тем чтобы затем стандартной командой document.execCommand("undo") отменить эти изменения.
Нет такого.
В Sciter мне пришлось добавлять Element.transact(callback) метод:
Element.transact(function(mutator) { // эти действия откатятся (undo) как одна опрерация
mutator.insertNode(pos,element1);
mutator.insertNode(pos,element2);
mutator.removeNode(element3);
});
https://sciter.com/docs/content/sciter/Transact.htm