Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Запуск функции после загрузки дива (https://javascript.ru/forum/misc/58019-zapusk-funkcii-posle-zagruzki-diva.html)

qwe88 31.08.2015 13:18

Запуск функции после загрузки дива
 
Добрый день!
Подскажите, пожалуйста, как сделать запуск функции, только после загрузки div-а (с любым содержанием).
После дива расположить скрипт - нельзя
Jquery c функцией ready - нельзя

Lemme 31.08.2015 13:36

qwe88, без ready - window.onload ?:D

qwe88 31.08.2015 13:37

:)
НА сколько я понимаю window.onload это загрузка всей страницы. А мне нужно после загрузки конкретного элмента

tsigel 31.08.2015 13:49

qwe88,
Ну если вы знаете его селектор или id, то можно лупить по нему (например каждые 10 или 5 мс) в доме пока не появится) Но лучше дождаться хотябы загрузки дом, например body onload

qwe88 31.08.2015 13:52

body onload = window.onload , если я не ошибаюсь.
Лупить имеете ввиду через setInterval() ?

tsigel 31.08.2015 13:54

Цитата:

Сообщение от qwe88
Лупить имеете ввиду через setInterval() ?

Да.
А DOMContentLoaded тож низя?

qwe88 31.08.2015 14:09

Цитата:

Сообщение от tsigel (Сообщение 386696)
Да.
А DOMContentLoaded тож низя?

В принципе альтернатива. Спасибо!
Но хотелось бы на будущее понимать, есть ли решение данной задачи

caetus 31.08.2015 19:01

может дождись загрузки DOM потом через window.onload встав div и вызови функцию

tsigel 31.08.2015 21:05

qwe88,
Вообще DOMContentLoaded - это просто нативный вариант $(document).ready(...), в любом случае перед манипуляциями с домом надо дождаться пока догрузится хтмл. Самый простой способ - скрипты вниз, если скрипты в head, то DOMContentLoaded.

forwardonly2015 01.09.2015 04:32

<html>

<head>
<meta charset="utf-8">

</head>

<body>

<div id="container"></div>


<script>


div=document.createElement("div")
div.innerHTML="foo"

observer=new MutationObserver(function(mutations){
  mutations.forEach(function(mutation){if(mutation.target.id==="container") alert("my script is running")})
})


observer.observe(container, {childList: true})
setTimeout(function(){container.appendChild(div)}, 3000)


</script>
</body>
</html>

tsigel 01.09.2015 08:03

forwardonly2015,
Как возможный вариант - это прикольно, но в реальном коде так лучше не делать.

qwe88 01.09.2015 09:50

ОК, спасибо!

tsigel 01.09.2015 09:54

qwe88,
Таймаутом тоже лучше не лупить) Это я предложил потому что вы писали что нельзя ждать загрузки дома. Есть стандартные способы дождаться загрузки, ими и надо пользоваться. Остальное - костыли.

qwe88 01.09.2015 09:55

Согласен

forwardonly2015 01.09.2015 10:05

Цитата:

Сообщение от tsigel
Таймаутом тоже лучше не лупить

А вы и не отловите это событие таймаутом. Вы просто бред пишите, дело тут не в нетив/ненейтив. Осильте уже понять асинхронность. Вместо того чтобы учиться, лучше бы научились хоть чему-нибудь, наконец, или всю жизнь собираетесть тормозить учить новичков новым средствАм?

tsigel 01.09.2015 10:20

forwardonly2015,
Конкретно событие не отловить, да, а вот попасть в него + 10мс можно запросто. И бреда я не писал, только в вашем воображении.

forwardonly2015 01.09.2015 10:32

tsigel,
юрий гагарин оказывается, полетел в космос, я поймал это событие, аккурат в 2015. Но это определенно не бред, не надо на меня косо смотреть.

tsigel 01.09.2015 10:36

forwardonly2015,
в отличие от вас, кроме неадеквата я предложил хорошее решение. А вы только пузыри из говна пускаете. Я отказываюсь продолжать беседу в данном направлении с вами.

forwardonly2015 01.09.2015 10:40

tsigel,
То есть единственно возможное решение является неадекватным? Вам уже давно в академики пора, засиделись Вы, батенька в профессоррах.
Цитата:

Сообщение от tsigel
я предложил хорошее решение

Жалко его никто не видел, вы наверно его белым текстом на белом фоне оформили.


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