Воспроизведение действий пользователя только с помощью Javascript - это сложная проблема .
Прежде всего, вы не можете перемещать курсор мыши, вы также не можете эмулировать наведение / наведение мыши. Так что большая часть взаимодействия пользователя со страницей исчезает.
Во-вторых, когда-то записанные действия, большую часть времени они должны быть воспроизведены в другой среде, чем они были записаны в первую очередь. Я имею в виду, что вы можете воспроизводить действия на экране с меньшим разрешением, другим клиентским браузером, другим обслуживаемым контентом на основе воспроизведения файлов cookie браузера и т. Д.
Если вы потратите время на изучение доступных служб, позволяющих записывать действия посетителей веб-сайта (http://clicktale.com, http://userfly.com/ и многие другие), вы увидите, что ни один из них способны полностью воспроизводить пользовательские действия , особенно когда речь идет о наведениях мыши, ajax, сложных JS-виджетах.
Что касается вашего вопроса об обнаружении изменений, внесенных в DOM - как сказал Крис Бискарди в своем ответе, существуют события мутации , которые предназначены для этого. Однако имейте в виду, что они не реализованы в каждом браузере. А именно, IE не поддерживает их (они будут поддерживаться начиная с IE 9, согласно этой записи в блоге на MSDN http://blogs.msdn.com/b/ie/archive/2010/03/26/dom-level-3-events-support-in-ie9.aspx).
Использование этих событий может быть подходящим для вас, в зависимости от варианта использования.
Что касается ", то лучше более простой способ хранения всех событий ". Существуют другие способы (с синтаксическим подходом) прослушивания событий по вашему выбору, однако обработка (= хранение) их не может быть обработана простым способом, если вы не хотите сериализовать целые объекты событий, что не было бы хорошей идеей, если бы вы отправили информацию об этом событии на какой-либо сервер для их хранения. Вам следует учитывать тот факт, что при использовании веб-сайта происходит огромное количество событий, следовательно, существует огромный объем потенциальных данных, которые будут сохранены / отправлены на сервер.
Надеюсь, я прояснил ситуацию, и вы найдете эту информацию полезной. Я сам принимал участие в проекте, целью которого было добиться того, чего вы пытаетесь достичь, поэтому я знаю, насколько это может быть сложно, если вы начнете копаться в предмете.