Выполнение JS до готовности всего DOM - PullRequest
0 голосов
/ 19 июня 2011

Хорошо, я сделал 2 сообщения об этом, но почему-то я не могу понять это в своем маленьком уме.

Итак, я пришел к выводу, что если у нас что-то вроде этого:

<script type="text/javascript" src="somefile.js"></script>
<script type="text/javascript">
func1();
</script>

и func1 () определен в somefile.js, он гарантированно запускается, когда браузер достигает этой строки.

Однако, что если у меня большая страница (без учета изображений и т. д., только HTML), которая требуетнесколько секунд для загрузки и для готовности DOM (насколько я понимаю DOM становится готовым, когда весь HTML-код был загружен и проанализирован), и я хочу, чтобы какой-то код выполнялся и работал над частями страницы, которые были загружены во времяостальная часть большой страницы все еще загружается?

Например, что-то вроде:

<div id="div1">Some div where content will be inserted by the inline javascript below</div>
<script type="text/javascript"> notifyPartLoaded("div1"); </script>

^^ Существует ли что-то подобное?

1 Ответ

1 голос
/ 19 июня 2011

Я не уверен, какой у вас вопрос, но простой способ обеспечить готовность DOM - это поместить ваш JavaScript внизу HTML, рядом с закрывающим тегом </body>.

<!doctype html>
<html>
    <head>
        <title>some title</title>
        <!-- this script could go toward the bottom too, but it must be before --> 
        <!--   your script if your script relies on it -->
        <script type="text/javascript" src="somefile.js"></script>
    </head>
    <body>  
        <div id="div1">Some div where content will be inserted by the inline javascript below</div>
        <!-- your HTML -->
        <!-- your HTML -->
        <!-- your HTML -->

        <!-- Place your script last -->
        <!-- ...though it would be better to have it in a separate file -->
        <script type="text/javascript"> notifyPartLoaded("div1"); </script>
    </body>
</html>

Поскольку ваш код является после всех других элементов, они будут существовать для манипуляций, когда ваш код будет наконец загружен и запущен.

...