Я не думаю, что есть способ экспортировать все состояние DOM без ручного просмотра каждого фрагмента и его сохранения. Существует много информации, которая представляет этот DOM, чем то, что видно в источнике.
Например, вы можете сохранить положение полосы прокрутки окна, которое доступно в объекте окна, как window.scrollX
и window.scrollY
. Это только один пример, но нужно сохранить много другой информации о состоянии, включая подключенные обработчики событий и т. Д.
Если вы могли бы определить части, которые соответствуют вашим целям, игнорируя при этом другие, вы можете сохранить их локально, используя Google Gears (теперь устаревший) или новое Локальное хранилище , введенное в HTML5, и если вы уже сериализовав эту информацию, вы можете передать ее на какой-нибудь сервер и восстановить ее оттуда. Новый механизм хранения в HTML5 называется DOM Storage
, но он немного вводит в заблуждение, потому что это просто хранилище пар ключ-значение, где ключи и значения являются строками.
Редактировать : Это может быть другая точка зрения на проблему, но здесь она идет. Вместо сохранения всего состояния DOM, вы можете сохранить только начальное состояние и соответствующие действия, которые его изменяют. Чтобы добраться до конечного состояния, будет использован механизм воспроизведения, который запускает каждое действие последовательно. Это популярный шаблон проектирования, известный как шаблон команд . Вот как многопользовательские игры поддерживают актуальность и синхронизацию каждого игрока, передавая только действия игрока, такие как нажатие клавиши, движение мыши и т. Д., Вместо всего вида, и получатель применяет эти действия для обновления своего состояния. Это намного сложнее, чем на практике, но в этом суть.