Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как отследить появление элемента на странице? (https://javascript.ru/forum/misc/13655-kak-otsledit-poyavlenie-ehlementa-na-stranice.html)

рони 08.12.2010 11:26

Как отследить появление элемента на странице?
 
Есть динамически подгружаемый контент, скажем div после того как он загрузился надо изменить его содержимое, если бы надо было навесить клики можно отслеживать event.target документа или использовать jQuery.live, а как быть в данном случае?
Самое простое что пришло в голову ))) добавляю картинку в конец дива и у неё в onload="foo(this.parentNode)", функция foo изменяет содержимое div и заодно удаляет картинку, хотя она практически и так не видна, используеться картинка минимального размера.
Буду рад если кто предложит иное решение.

Kolyaj 08.12.2010 12:06

Само на страницу ничего не добавляется. Там где вы обновляете этот кусок страницы, там и вызывайте нужные действия.

Skipp 08.12.2010 12:07

рони,
никогда не понимал такие вопроссы=)
Сами по себе элементы не появятся же, ихнее появление в любом случае производит какой-то код, так поменяйте его так что бы при появлении чего-то выполнялись необходимые вам задачи.

monolithed 08.12.2010 12:37

Если я правильно понял:

<script type="text/javascript">
window.onload = function(){
    var element = document.getElementsByTagName('div')[0];
    element.appendChild(document.createElement('p')); //добавляем новый элемент P в DIV
    var children = element.childNodes, i = children.length;
    
    if(element.hasChildNodes()){ //проверяем дочернии элементы DIV
        while(i--){
            alert(children[i].tagName);
        }
    }
    
    while(element.firstChild){ //удаляем дочернии элемент P
         element.removeChild(element.firstChild);
         alert(document.getElementsByTagName('p')[0]);
    }
};
</script>
<div></div>

рони 08.12.2010 15:43

Спасибо всем ответившим ....

Yorks 19.03.2014 18:58

по сути нмкто не ответил. Для тех, кто говорит что задача не имеет смысла, приведу пример задачи, с которой столкнуляся лично я.
Нужно добавть атрибут on click на элемент, появляющийся в модальном окне с неизвесьной задержкой без достпа к исходному коду при помощи дополнительного js и при этом добавить в атрибут еще и переменную get , что возводит задачу в новую степень. Скажу сразу, что jq delay уже пробовал, не спасает. Так что вместо того, чтобы говорить о бесполезности вопроса, лучше реально бы разобрались в задаче.

Erolast 19.03.2014 19:43

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

Vlasenko Fedor 19.03.2014 20:27

и всегда можно запустить таймер. проверяя есть ли элемент (загружен ли он)
:)

Erolast 19.03.2014 20:54

Зачем использовать такое некрасивое решение, как таймеры, когда XMLHttpRequest предоставляет возможность простановки коллбеков?)

Vlasenko Fedor 19.03.2014 21:23

Цитата:

Сообщение от Erolast
Зачем использовать такое некрасивое решение, как таймеры

Иногда без них не обойтись. К примеру загрузка флеш
Далее по таймеру можно и подгружать контент(отложенная загрузка)
И с чего вы взяли XMLHttpRequest, где он в этой теме упоминается. Выдумываете себе новые задачи? Или считаете его единственным методом подгрузки контента


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