Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Событие ready и теги script (https://javascript.ru/forum/jquery/35640-sobytie-ready-i-tegi-script.html)

FanAizu 16.02.2013 23:27

Событие ready и теги script
 
Вопрос в следующем: DOM считается готовым после того, как отработают все скрипты внутри тегов script или же событие ready может быть сгенерированно до того, как отработаю скрипты из тегов script? Расскажите, пожалуйста, и дайте ссылку, если возможно, почитать на эту тему. Спасибо.

danik.js 16.02.2013 23:35

Создание DOM приостанавливается на каждом script, в том числе и внешнем. Но это только в случае если у script нет атрибута defer или async.

FanAizu 16.02.2013 23:38

Цитата:

Сообщение от danik.js (Сообщение 234863)
Создание DOM приостанавливается на каждом script, в том числе и внешнем. Но это только в случае если у script нет атрибута defer или async.

Значит ли это, что событие ready не будет сгенерировано пока не отработают все скрипты из тегов script?

danik.js 16.02.2013 23:41

Да. Кроме defer|async

FanAizu 17.02.2013 00:14

Цитата:

Сообщение от danik.js (Сообщение 234869)
Да. Кроме defer|async

А подскажите ещё, пожалуйста, скрипты отрабатывают в той последовательности, в которой они идут в доукменте, т.е. скрипты которые находятся выше в документе(ближе к началу документа, то есть к строке doctype) отрабатывают раньше, чем те, что за ними? Или же это происходит в произвольном порядке?

Deff 17.02.2013 00:22

Если скрипт стоит после тега </body>
Он отработает позже события $(document).ready

danik.js 17.02.2013 10:41

Deff, с чего ты взял? Кстати, скрипты должны быть либо в head либо в body, других вариантов нет (если в html5 их не узаконили)

Deff 17.02.2013 10:59

Цитата:

Сообщение от danik.js
Кстати, скрипты должны быть либо в head либо в body, других вариантов нет


danik.js,
Посмотри рекламу от yandex http://hostjs-mybb2011.narod.ru/Rus_Lat.htm
Внизу после </html>
Это yandex сам её вставляет.

danik.js 17.02.2013 11:21

Реклама? Еще чего )

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script>$(document).ready(function(){ alert('ready')});</script>
        <script>alert('script in head');</script>
    </head>
    <body>
        <script>alert('script in body');</script>
    </body>
    <script>alert('script after body');</script>
</html>
<script>alert('script after html');</script>

Deff 17.02.2013 11:39

danik.js,
Да = уже заметил, - я вставлял на реальную страницу. http://designforum.bestff.ru/

Походу для произвольного случая - соврал
_____________
Уточнил про рекламу, пост #8


Часовой пояс GMT +3, время: 13:09.