Доступ к Undo Stack
От: x-code  
Дата: 05.08.20 21:05
Оценка:
Обратил внимание на то, что в режиме ContentEditable действия, выполняемые с помощью execCommand, можно отменить с помощью той же execCommand("undo"). А действия, выполненные с помощью модификации DOM напрямую, нельзя отменить.
Однако одна лишь execCommand меня соврешенно не устраивает.
Нет ли какой-то функции в JavaScript, которая "сохраняет состояние" перед модификацией DOM и добавляет его в Undo стеку, с тем чтобы затем стандартной командой document.execCommand("undo") отменить эти изменения.
Писать undo stack вручную не предлагайте, точно не буду, проще вообще забить на это.
Re: Доступ к Undo Stack
От: c-smile Канада http://terrainformatica.com
Дата: 16.08.20 16:10
Оценка: 78 (1)
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.