при вызове onModuleLoad() не гарантируется.

Вопрос

GWT BOOTSTRAP - Вопрос

Автор вопроса: CHAPaОтветов: 2

Читая 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)?

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

javascriptgwt

Ответы

Ответ 1 · рейтинг 2 · Hilbrand Bouwkamp

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

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

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

Ответ 2 · necromancer

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы