![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Luceus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.3.2006 Репутация: нет Всего: 1 |
Всем добрый день!
Столкнулся со следующей задачкой. Есть веб-приложение, которое реализовано с использованием Ajax. Нажимаем кнопку слева, справа происходит перезагрузка содержимого Div'a или создание/изменение структуры документа и тому подобное. Как определить, что произошла перезагрузка некоторых элементов на странице или их изменение? Все усложняется тем, что мне необходимо определить это в WSH скрипте, который подключается к IE браузеру. Алгоритм работы этого скрипта следующий: 0. Запускается скрипт; 1. Он запускает браузер; 2. Скрипт нажимает на ссылки на странице; 3. Происходит перезагрузка содержимого или создание динамического меню, или исчезают/добавляются некоторые элементы; 4. Скрипт дожидается, когда все изменения завершаться; 5. Продолжить работать с измененным содержимым. Скрипт - внешняя сущность, который производит тестирование функционала и содержимое приложения он не меняет. Если необходимы детали, я объясню их. Спасибо. |
|||
|
||||
Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 12 Всего: 34 |
ну по идее сравнить document.body.innerHTML до нажатия и после
|
|||
|
||||
Luceus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.3.2006 Репутация: нет Всего: 1 |
Если учесть тот факт, что содержимое может изменяться на протяжении определенного времени, то проверяя, изменен ли InnerHtmlбудет не совсем корректно, но я обязательно опробую это на практике. Спасибо большое за подсказку.
Есть ли еще какие-либо другие варианты?? |
|||
|
||||
Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 12 Всего: 34 |
![]() |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Обсуждались onpropertychange и DOMAttrModifed тут. Вообще DOM 2 Event спецификация определила массу событий на DOM дереве и странице в целом.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Luceus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.3.2006 Репутация: нет Всего: 1 |
Sardar, посмотрел я эти ссылки, но при попытке использования указанных методов и событий, мой скрипт ругается, хотя у него есть полная поддержка DOM'a. =( Я работаю с браузером IE и буду работать только с ним. Может есть определенная несовместимость??
А есть пример по этому добру в работе? ![]() Я реализовал первый способ, он работает =( Но он не корректен в том смысле, что мне необходимо проверять через определенные интервалы времени текст страницы и сравнивать. Хотелось бы что-нибудь попроще и более действенное. Спасибо. |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Да, в IE DOM 2 Event не реализован и вряд ли когда появится. А вот на onpropertychange я поторопился, изменения innerHTML он не ловит.
Я думал тебе события нужны. Тогда просто поставь на setInterval() функцию (вбей в поиск), что будет пробегаться по дереву элементов и смотреть, что изменилось. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Luceus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.3.2006 Репутация: нет Всего: 1 |
Sardar, А как быть вот со следующим. Допустим, я проверяю через определенный интервал времени не было ли каких либо изменений со структурой ветки. Интернет медленный, страница грузится медленно. Несколько раз подряд скрипт прошел, и определил, что ветка не была изменена. Я начинаю работать с элементами, но они подгружаются в процессе, скрипт валится. =(
А можно ли как-нибудь получить объект, который занимается фоновой загрузкой данных? По всей видимости, придется договариваться с программистами, что бы они сделали какие-нибудь флаги, что бы нам было легче работать с документом. Я так понял, что больше никаких других способов определить загрузки нет? |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Круто... Бригада JavaScript программистов... вероятно, действительно, чем выяснять не изменил ли кто злонамеренно код, путем многократной его проверки, договорится с автором этого самого изменения. Пусть он callback какой вызовет... Ну или самому вставить вызов этого самого callback'а. Мест, как правило, не очень много, да и поэффективнее должно быть. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Ну свалиться скрипт не должен, а вот то что это не эффективно - это верно. Самое верное, как указал ksnk, генерить события (вызывать callback'и) при изменении контента, договаривайся со своими. ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Luceus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.3.2006 Репутация: нет Всего: 1 |
Sardar, ksnk, Itsys, большое спасибо вам за ответы.
|
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |