| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Отлов изменений в структуре документа |
| Автор: Luceus 28.2.2008, 16:40 |
| Всем добрый день! Столкнулся со следующей задачкой. Есть веб-приложение, которое реализовано с использованием Ajax. Нажимаем кнопку слева, справа происходит перезагрузка содержимого Div'a или создание/изменение структуры документа и тому подобное. Как определить, что произошла перезагрузка некоторых элементов на странице или их изменение? Все усложняется тем, что мне необходимо определить это в WSH скрипте, который подключается к IE браузеру. Алгоритм работы этого скрипта следующий: 0. Запускается скрипт; 1. Он запускает браузер; 2. Скрипт нажимает на ссылки на странице; 3. Происходит перезагрузка содержимого или создание динамического меню, или исчезают/добавляются некоторые элементы; 4. Скрипт дожидается, когда все изменения завершаться; 5. Продолжить работать с измененным содержимым. Скрипт - внешняя сущность, который производит тестирование функционала и содержимое приложения он не меняет. Если необходимы детали, я объясню их. Спасибо. |
| Автор: Itsys 28.2.2008, 16:52 |
| ну по идее сравнить document.body.innerHTML до нажатия и после |
| Автор: Luceus 28.2.2008, 17:01 |
| Если учесть тот факт, что содержимое может изменяться на протяжении определенного времени, то проверяя, изменен ли InnerHtmlбудет не совсем корректно, но я обязательно опробую это на практике. Спасибо большое за подсказку. Есть ли еще какие-либо другие варианты?? |
| Автор: Itsys 28.2.2008, 17:17 |
| |
| Автор: Sardar 28.2.2008, 17:25 |
| Обсуждались onpropertychange и DOMAttrModifed http://forum.vingrad.ru/index.php?showtopic=196116&view=findpost&p=1412612. Вообще DOM 2 Event спецификация определила массу событий на DOM дереве и странице в целом. |
| Автор: Luceus 28.2.2008, 18:33 |
| Sardar, посмотрел я эти ссылки, но при попытке использования указанных методов и событий, мой скрипт ругается, хотя у него есть полная поддержка DOM'a. =( Я работаю с браузером IE и буду работать только с ним. Может есть определенная несовместимость?? А есть пример по этому добру в работе? Я реализовал первый способ, он работает =( Но он не корректен в том смысле, что мне необходимо проверять через определенные интервалы времени текст страницы и сравнивать. Хотелось бы что-нибудь попроще и более действенное. Спасибо. |
| Автор: Luceus 29.2.2008, 11:44 |
| Sardar, А как быть вот со следующим. Допустим, я проверяю через определенный интервал времени не было ли каких либо изменений со структурой ветки. Интернет медленный, страница грузится медленно. Несколько раз подряд скрипт прошел, и определил, что ветка не была изменена. Я начинаю работать с элементами, но они подгружаются в процессе, скрипт валится. =( А можно ли как-нибудь получить объект, который занимается фоновой загрузкой данных? По всей видимости, придется договариваться с программистами, что бы они сделали какие-нибудь флаги, что бы нам было легче работать с документом. Я так понял, что больше никаких других способов определить загрузки нет? |
| Автор: ksnk 29.2.2008, 12:06 |
Круто... Бригада JavaScript программистов... вероятно, действительно, чем выяснять не изменил ли кто злонамеренно код, путем многократной его проверки, договорится с автором этого самого изменения. Пусть он callback какой вызовет... Ну или самому вставить вызов этого самого callback'а. Мест, как правило, не очень много, да и поэффективнее должно быть. |
| Автор: Sardar 29.2.2008, 15:03 | ||
Ну свалиться скрипт не должен, а вот то что это не эффективно - это верно. Самое верное, как указал ksnk, генерить события (вызывать callback'и) при изменении контента, договаривайся со своими. |
| Автор: Luceus 29.2.2008, 16:01 |
| Sardar, ksnk, Itsys, большое спасибо вам за ответы. |