Если встроенный код JavaScript будет выполнен до события загрузки документа? - PullRequest
0 голосов
/ 21 января 2012

У меня есть страница с тегом <form>.Внутри form есть много html плюс некоторый встроенный javascript в конце var <form>.
И я слушаю событие загрузки документа.Могу ли я быть на 100% уверен, что когда будет запущена загрузка документа, весь этот встроенный код javascript уже выполнен?
Пример разметки:

<body>
  <form>
    --html controls---
    <script type="text/javascript">
      --some code to run here--
    </script>
  </form>
</body> 

Я думаю, что ответ «да», встроенный JavaScriptбудет выполнен до загрузки документа, но я хочу найти доказательства.
Спасибо.

edit

живая демонстрация
Документload запускается только тогда, когда все элементы управления html загружены и javascript (встроенный или с атрибутом src) загружен и интерпретирован.Я прав с этим утверждением?

Ответы [ 3 ]

4 голосов
/ 21 января 2012

Если вы не поместите код, который хотите выполнить, в функцию обратного вызова domready, ваш встроенный код javascript будет выполнен сразу же после загрузки страницы (до domready).

1 голос
/ 21 января 2012

Встроенный сценарий будет выполнен сразу же, как только тег сценария завершит синтаксический анализ, поэтому вы не сможете получить доступ к остальной части документа.С другой стороны, он позволяет вам писать дополнительный HTML-код в этой точке документа.

Обратите внимание, что в Firefox 3.5 была ошибка, из-за которой вы могли установить атрибут defer во встроенном скрипте, и он не запустился бы немедленно.Это нестандартное поведение было исправлено в Firefox 3.6.

0 голосов
/ 21 января 2012

Я думаю, у вас нет никаких гарантий Если это медленный javascript (emscripten), я думаю, что возможно, что код все еще выполняется, пока срабатывает загрузка.

но я не смог найти четкую документацию: https://developer.mozilla.org/en/DOM/window.onload http://msdn.microsoft.com/en-us/library/ie/cc197055%28v=vs.85%29.aspx

http://www.w3.org/TR/html4/html40.txt:

onload = script [CT] Событие onload происходит, когда пользовательский агент завершает загрузку окно или все кадры в пределах FRAMESET. Этот атрибут может быть используется с элементами BODY и FRAMESET.

так что я не могу найти гарантии, вы можете либо протестировать (с чем-то тяжелым, например, демоверсию отсюда https://github.com/kripken/emscripten/wiki), hpe для лучшего, либо встроить в свое хранилище проверку, проверяющую ваш встроенный скрипт завершено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...