GWT BOOTSTRAP - Вопрос

Читая GWT Bootstrap на странице Googles, у меня есть вопрос. (http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/FAQ_WhenDoModulesLoad)

Предположения: большинство браузеров допускают максимум два одновременных подключения для получения ресурсов.

HTML-страница:

<html> <body onload='alert("w00t!")'> <img src='bigImageZero.jpg'></img> <script source='externalScriptZero.js'></script> <img src='bigImageOne.jpg'></img> <img src='reallyBigImageTwo.jpg'></img> <script src='com.example.app.App.nocache.js'></script> <script src='externalScriptOne.js'></script> </body> </html>

Итак, бутстрап состоит из:

  1. Выбирается HTML-документ, и начинается его анализ.
  2. Начните загрузку bigImageZero.jpg.
  3. Начните загрузку externalScriptZero.js.
  4. bigImageZero.jpg завершается (допустим). Синтаксический анализ блокируется до тех пор, пока externalScriptZero.js не завершит выборку и оценку.
  5. externalScriptZero.js завершается.
  6. Начните получать файлы bigImageOne.jpg и действительноBigImageTwo.jpg одновременно.
  7. bigImageOne.jpg завершается (давайте снова предположим). com.example.app.App.nocache.js начинает выборку и оценку.
  8. ... nocache.js завершается, и скомпилированный скрипт (... cache.js) начинает выборку (это не блокирует).
  9. ... cache.js завершается. onModuleLoad () еще не вызывается, поскольку мы все еще ждем завершения externalScriptOne.js, прежде чем документ будет признан «готовым».
  10. externalScriptOne.js завершается. Документ готов, поэтому запускается onModuleLoad ().
  11. действительноBigImageTwo.jpg завершается.
  12. body.onload () запускается, в этом случае отображается поле alert ().

    Вопрос:

    как JAVASCRIPT знает, что документ готов к запуску функции onModuleLoad (шаг 10)?


person CHAPa    schedule 13.07.2010    source источник
comment
Ваш вопрос очень неясен грамматически. Что именно вы хотите знать?   -  person tgdavies    schedule 14.07.2010
comment
Как функция onModuleLoad (javascript) может ждать, пока документ будет готов   -  person CHAPa    schedule 14.07.2010


Ответы (2)


С той же страницы:

  • Загрузка тегов <img> при вызове onModuleLoad() не гарантируется.
  • <script> теги гарантированно загружаются при вызове onModuleLoad().

Поэтому, когда выполняется onModuleLoad(), загружается externalScriptOne.js, он не запускается до загрузки всех тегов скрипта.

person Hilbrand Bouwkamp    schedule 14.07.2010
comment
Итак, OnModuleLoad не был запущен, потому что парсер извлекает externalScriptOne.js. правильно ? заранее спасибо - person CHAPa; 14.07.2010
comment
да это верно. он не запускается, пока не будет загружен externalStricptOne.js. Я не уверен, что это особенность тегов скрипта или GWT регистрируется на body.onload. Но, как уже упоминалось, гарантируется, что все скрипты загружаются при вызове onModuleLoad. - person Hilbrand Bouwkamp; 14.07.2010
comment
Возможно, GWT что-нибудь зарегистрирует в событии Body.OnLoad. Вы правы, я ищу это в скомпилированном скрипте GWT. Но загрузка тегов ‹img› на странице Google при вызове onModuleLoad () не гарантируется. сломать теорию о событии body.onLoad. - person CHAPa; 14.07.2010

либо nocache.js, либо cache.js могут добавить дополнительный тег <script> сразу после последнего тега <script>. этот дополнительный тег <script> не будет извлечен, пока не будут извлечены, проанализированы и оценены все предыдущие теги <script>. тогда этот тег <script> будет извлекаться, выполняться и оцениваться без ожидания каких-либо изображений. оценка этого тега <script> может вызвать onModuleLoad(), и он не будет ждать никаких изображений, поэтому это произойдет раньше, чем body.onload

это всего лишь моя теория; Мне не удалось проверить это на моем сервере разработки, и я не пытался проверить это на appengine.

person necromancer    schedule 25.02.2011