Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отлов изменений в структуре документа 
V
    Опции темы
Luceus
Дата 28.2.2008, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.3.2006

Репутация: нет
Всего: 1



Всем добрый день!


Столкнулся со следующей задачкой. Есть веб-приложение, которое реализовано с использованием Ajax. Нажимаем кнопку слева, справа происходит перезагрузка содержимого Div'a или создание/изменение структуры документа и тому подобное. Как определить, что произошла перезагрузка некоторых элементов на странице или их изменение? Все усложняется тем, что мне необходимо определить это в WSH скрипте, который подключается к IE браузеру.

Алгоритм работы этого скрипта следующий:
0. Запускается скрипт;
1. Он запускает браузер;
2. Скрипт нажимает на ссылки на странице;
3. Происходит перезагрузка содержимого или создание динамического меню, или исчезают/добавляются некоторые элементы;
4. Скрипт дожидается, когда все изменения завершаться;
5. Продолжить работать с измененным содержимым.

Скрипт - внешняя сущность, который производит тестирование функционала и содержимое приложения он не меняет.

Если необходимы детали, я объясню их.

Спасибо.
PM MAIL WWW   Вверх
Itsys
Дата 28.2.2008, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



ну по идее сравнить document.body.innerHTML до нажатия и после
PM MAIL WWW Skype   Вверх
Luceus
Дата 28.2.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.3.2006

Репутация: нет
Всего: 1



Если учесть тот факт, что содержимое может изменяться на протяжении определенного времени, то проверяя, изменен ли InnerHtmlбудет не совсем корректно, но я обязательно опробую это на практике. Спасибо большое за подсказку.

Есть ли еще какие-либо другие варианты??
PM MAIL WWW   Вверх
Itsys
Дата 28.2.2008, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



 smile А ты поставь проверку каждые 10 секунд... и когда в течении 2-3 циклов не изменяется - значит изменения закончены
PM MAIL WWW Skype   Вверх
Sardar
Дата 28.2.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Обсуждались onpropertychange и DOMAttrModifed тут. Вообще DOM 2 Event спецификация определила массу событий на DOM дереве и странице в целом.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Luceus
Дата 28.2.2008, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.3.2006

Репутация: нет
Всего: 1



Sardar, посмотрел я эти ссылки, но при попытке использования указанных методов и событий, мой скрипт ругается, хотя у него есть полная поддержка DOM'a. =( Я работаю с браузером IE и буду работать только с ним. Может есть определенная несовместимость??

А есть пример по этому добру в работе?  smile

Я реализовал первый способ, он работает =( Но он не корректен в том смысле, что мне необходимо проверять через определенные интервалы времени текст страницы и сравнивать. Хотелось бы что-нибудь попроще и более действенное. Спасибо.
PM MAIL WWW   Вверх
Sardar
Дата 28.2.2008, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Да, в IE DOM 2 Event не реализован и вряд ли когда появится. А вот на onpropertychange я поторопился, изменения innerHTML он не ловит.

Цитата(Luceus @  28.2.2008,  17:33 Найти цитируемый пост)
проверять через определенные интервалы времени текст страницы и сравнивать

Я думал тебе события нужны. Тогда просто поставь на setInterval() функцию (вбей в поиск), что будет пробегаться по дереву элементов и смотреть, что изменилось.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Luceus
Дата 29.2.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.3.2006

Репутация: нет
Всего: 1



Sardar, А как быть вот со следующим. Допустим, я проверяю через определенный интервал времени не было ли каких либо изменений со структурой ветки. Интернет медленный, страница грузится медленно. Несколько раз подряд скрипт прошел, и определил, что ветка не была изменена. Я начинаю работать с элементами, но они подгружаются в процессе, скрипт валится. =(

А можно ли как-нибудь получить объект, который занимается фоновой загрузкой данных?

По всей видимости, придется договариваться с программистами, что бы они сделали какие-нибудь флаги, что бы нам было легче работать с документом.

Я так понял, что больше никаких других способов определить загрузки нет?
PM MAIL WWW   Вверх
ksnk
Дата 29.2.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(Luceus @  29.2.2008,  11:44 Найти цитируемый пост)
придется договариваться с программистами,

Круто... Бригада JavaScript программистов...
вероятно, действительно, чем выяснять не изменил ли кто злонамеренно код, путем многократной его проверки, договорится с автором этого самого изменения. Пусть он callback какой вызовет... Ну или самому вставить вызов этого самого callback'а. Мест, как правило, не очень много, да и поэффективнее должно быть.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Sardar
Дата 29.2.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Luceus @  29.2.2008,  10:44 Найти цитируемый пост)
Я начинаю работать с элементами, но они подгружаются в процессе, скрипт валится. =(

Ну свалиться скрипт не должен, а вот то что это не эффективно - это верно.

Самое верное, как указал ksnk, генерить события (вызывать callback'и) при изменении контента, договаривайся со своими. smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Luceus
Дата 29.2.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.3.2006

Репутация: нет
Всего: 1



SardarksnkItsys, большое спасибо вам за ответы.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1065 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.