Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Готовность DOM
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Готовность DOM

Страниц (2): [1] 2 »
 

1. Pavelbeginner - 29 Января, 2013 - 11:21:23 - перейти к сообщению
Скажите, пожалуйста, DOM может быть готов до выполнения всех скриптов из тегов script или же DOM готов только после отработки всех скриптов. Имею ввиду не будет ли такого, что я назначу обработчик на событие ready из jquery, и когда этот обработчик вызовется, то часть скриптов ещё может не отработать до конца?
2. mullih - 29 Января, 2013 - 11:24:58 - перейти к сообщению
если вы используете jquery.ready то можете быть уверенны что документ загружен и DOM готов к использованию. но сторонние ресурсы еще могут быть не подгруженны, как то скритовые файлы или картинки
3. esterio - 29 Января, 2013 - 11:29:01 - перейти к сообщению
redy в jQuery ето всего лишь обертка для onDOMContentLoaded(не IE) и onreadystatechange(для IE). Тоесть ето собитие когда создан DOM и с ним уже можна работать
(Добавление)
так навскидку
http://javascript[dot]ru/tutorial/ev[dot][dot][dot]domcontentloaded
4. Pavelbeginner - 29 Января, 2013 - 11:51:15 - перейти к сообщению
Так а скрипты все обязательно уже отрабатывают до того, как DOM готов или же DOM может быть уже готов, а скрипты ещё не отработали?
5. esterio - 29 Января, 2013 - 11:57:55 - перейти к сообщению
Самым верным решением ето отрабативать скрипты как раз после ready а не до него.
Тоесть следищий код вызовет ошыбку
CODE (html):
скопировать код в буфер обмена
  1. <script language="JavaScript" type="text/javascript">
  2. document.getElementById('id1').setAttribute('href', 'soe url');
  3. </script>
  4. <a href="#" id="id1">some link</a>
6. DelphinPRO - 29 Января, 2013 - 12:19:35 - перейти к сообщению
скрипты не ждут загрузки DOM , а выполняются в порядке следования на странице, сверху вниз. Очевидно, что при асинхронных вызовах (ajax, setTimeout, setInterval) возможна ситуация, когда DOM уже готов, а скрипт еще работает.
7. Pavelbeginner - 29 Января, 2013 - 13:12:52 - перейти к сообщению
DelphinPRO пишет:
скрипты не ждут загрузки DOM , а выполняются в порядке следования на странице, сверху вниз. Очевидно, что при асинхронных вызовах (ajax, setTimeout, setInterval) возможна ситуация, когда DOM уже готов, а скрипт еще работает.
А если исчключить асинхронные вызовы? То есть браузер в этом случае прежде, чем сгенерировать событие готовности DOM выполнит все скрипты?
8. DelphinPRO - 29 Января, 2013 - 13:47:46 - перейти к сообщению
Pavelbeginner пишет:
браузер в этом случае прежде, чем сгенерировать событие готовности DOM выполнит все скрипты?

при такой постановке вопроса - нет. браузер не будет ждать завершения скриптов, если DOM уже готов - сгенерит событие.
Вопрос нужно переформулировать - будет ли браузер продолжать строить DOM пока исполняется скрипт на странице? а хз Улыбка
9. Pavelbeginner - 29 Января, 2013 - 14:01:35 - перейти к сообщению
DelphinPRO пишет:
а хз
мой любимый ответ, ждал его))
10. IllusionMH - 29 Января, 2013 - 14:37:33 - перейти к сообщению
Pavelbeginner пишет:
мой любимый ответ, ждал его))

Ждали? Pavelbeginner, чего ж вы в спеку не заглянули?
Ппц, каждый раз, вопрос за вопросом - нет бы самому залезть в спеки(и прочее) и посмотреть. Нет! Нужно каждый раз спрашивать на форуме, а если ответ не дали, то никто ничего не знает. Почему чкто-то должен это делать за вас? Сами то хоть раз на свой вопрос без ответов написали найденный ответ?

Изучайте, тут ответ
_http://www[dot]w3[dot]org/html/wg/drafts/html/m[dot][dot][dot]tax[dot]html#the-end
11. Zuldek - 29 Января, 2013 - 14:43:47 - перейти к сообщению
Не очень понял о каком исполнении скриптов при неготовом DOM идет речь.
Браузер парсит код выстраивая DOM и никакой скрипт его задействующий не будет исполнятся пока не будет готов используемый в нем элемент DOM
12. IllusionMH - 29 Января, 2013 - 14:45:00 - перейти к сообщению
Zuldek пишет:
Браузер парсит код выстраивая DOM и никакой скрипт его задействующий не будет исполнятся пока не будет готово используемый в нем элемент DOM

Не будет исполнятся или просто вызовет эксепшн и пойдет дальше?
13. Zuldek - 29 Января, 2013 - 14:54:44 - перейти к сообщению
по стандарту должен вызвать и отрабатывать остальные, а вот как заложено будет в клиент это уже дело разработчиков клиента.
14. DelphinPRO - 29 Января, 2013 - 15:58:25 - перейти к сообщению
Zuldek пишет:
Не очень понял о каком исполнении скриптов при неготовом DOM идет речь.

я так понимаю озвученную проблему —

псевдокод:
CODE (html):
скопировать код в буфер обмена
  1. <head>
  2. <script>
  3.   $.ready(function(){
  4.     getElement(div).innerHTML += 'READY  ';
  5.   });
  6. </script>
  7. </head>
  8. <body>
  9. <div></div>
  10. <script>
  11.   ...
  12.   ... код, который долго выполняется
  13.   ...
  14.   getElement(div).innerHTML += 'OK ';
  15. </script>
  16. </body>


что будет в div: "OK READY" или "READY OK" ?
15. mullih - 29 Января, 2013 - 16:38:03 - перейти к сообщению
Zuldek пишет:
Не очень понял о каком исполнении скриптов при неготовом DOM идет речь.
Браузер парсит код выстраивая DOM и никакой скрипт его задействующий не будет исполнятся пока не будет готов используемый в нем элемент DOM


Объясните почему не <div>WOW</div> если скрипты ждут готового DOM?

CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. </head>
  5. <body>
  6.         <div>OOPS</div>
  7.         <script>
  8.                 getElement(div).innerHTML = 'WOW'
  9.         </script>
  10. </body>
  11. </html>

 

Powered by ExBB FM 1.0 RC1