Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   событие, которое срабатывает при изменении DOM структуры (https://javascript.ru/forum/events/9785-sobytie-kotoroe-srabatyvaet-pri-izmenenii-dom-struktury.html)

amigo* 05.06.2010 16:29

событие, которое срабатывает при изменении DOM структуры
 
ситуация такая. Есть html страничка, которая при старте подгружает несколько .js файлов (js`ники писал не я).
Следующим шагом происходит get запрос, который очевидно генерируется в одном из js файлов. В ответе - text/javascript функция, которая забивает данными определённый div.

Моя задача заключается в следующем. Нужно перед вставкой данных из ответа обработать эти данные нужным мне образом и только потом вставить... триггер получается.

Функцию, которая генерирует этот запрос, мне найти не удаётся (js-ники сильно перекручены). Соответственно доступа к функции-обработчику ответа у меня тоже нет. Но данные, полученные в respons`е мне нужно подкорректировать (доступа к php файла сервера нет, можно редактировать только js).

Решение, которое приходит в голову - в window.onload отслеживать нужный мне div и, если в div были вставлены данные, то вызвать свою функцию, подкорректировать эти данные и вернуть обратно.

Так вот как отследить изменение контента div`а я не знаю. Может кто-то ещё идею подкинет?
Может в onload`e считать количество детей этого дива...

exec 05.06.2010 17:01

var old = node.innerHTML;
setInterval(function () {
if (node.innerHTML != old) {
/* handler */
}
}, 100);

micscr 05.06.2010 17:04

Функцию, которая генерирует этот запрос, мне найти не удаётся

поищите получше. Эту функцию фиг скроешь.
Библиотека какая то используется, jQuery например ?

p.s. вообще ваша деятельность - подозрительна - не доплатили программисту что ли ?

micscr 05.06.2010 17:05

exec, жестокая такая проверка. Тормозить работу не будет?

exec 05.06.2010 17:11

micscr, не будет.

amigo* 05.06.2010 17:31

2 exec:
спасобо за вариант решения буду пробовать. Вопрос ещё по ходу - нельзя ли при срабатывании if в конце блока удалить setInterval, чтобы вдальнейшем не делала лишних проверок?

2 micscr:
подгружаются 2 js файла. оба используют jquery. функции в них начинаются так: function($){}(jquery), и внутри функций активно используются методи jquery.
В этих js файлах для того, чтобы найти запрос я искал следующие функции/переменные : XmlHttpRequest, $.get, $.post, load(), getJSON(), getScript(). Такого там не было.
Такой ещё вопрос. Как могут эти файлы использовать библиотеку jquery, если на клиента она не подгружалась? (смотрел в Fiddler`e)

micscr 05.06.2010 17:43

нельзя ли при срабатывании if в конце блока удалить setInterval, чтобы вдальнейшем не делала лишних проверок?

конечно можно удалить.
var inter = setInterval ...
if (больше не надо) {
  clearInterval(inter);
}


Как могут эти файлы использовать библиотеку jquery, если на клиента она не подгружалась?

должна была подгрузиться. Без неё бы не работало, а ведь работает? Смотри в FireBug-е.
XmlHttpRequest, $.get, $.post, load(), getJSON(), getScript(). Такого там не было.

А .ajax не искал? Поищи еще по расширению - php. И вообще - просмотри $(document).ready() - там скорее всего такая подгрузка инициируется.
Можешь ссылку дать - вместе посмотрим.

PeaceCoder 05.06.2010 17:48

Вариант exec хорош, только если например будет модификация атрибутов то триггер тоже стработает.

amigo* 05.06.2010 17:51

http://tour-consulting.com.ua/samo/index.html
Вот этот сайт. Только я не в firebug`e смотрел, а в fiddler`e

micscr 05.06.2010 18:21

подзашифровано там просто пакером. jQuery есть.


Часовой пояс GMT +3, время: 16:26.