Подтвердить что ты не робот

<script defer> и $(document).ready

Согласно http://caniuse.com/script-defer, большинство браузеров поддерживают атрибут script tag defer.

Я хотел бы знать, выполняются ли скрипты, указанные <script defer src="..."> до или после jQuery $(document).ready()? Являются ли основные, современные браузеры (Chrome, Firefox, IE и т.д.) Согласованными в порядке выполнения или варьируются?

4b9b3361

Ответ 1

Основываясь на этом скрипке, я должен сказать, что jQuery $(document).ready() выполняет после a script с defer. Я тестировал его с помощью Firefox и Chrome, и оба они имели одинаковое поведение независимо от последовательности скриптов.

Я предполагаю, что поведение в других браузерах может измениться в зависимости от их реализации, поэтому оно всегда неопределенно.

EDIT. Как оказалось, атрибут defer должен использоваться с внешним файлом javascript. Я редактировал скрипт, чтобы показать это, по-видимому, с теми же результатами.

Обновлена ​​скрипка здесь: http://jsfiddle.net/RNEZH/15/

Ответ 2

Атрибут defer имеет хорошую запись и анализ. Также См. комментарии к сообщению для дополнительной информации о том, как defer был переопределен в HTML5.

Мое заключение: defer слишком зависит от браузера, чтобы рассчитывать. Поэтому используйте технику подготовки документа jQuery.

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

Ответ 3

Просто script должен быть выполнен до $(document).ready(), используется ли defer или нет, и почти все основные браузеры поддержка defer.

Но для обеспечения безопасности я рекомендую использовать как $(document).ready(), так и defer. Так почему defer? Поскольку он помогает быстро появляться на странице (поскольку внешний script загружается параллельно) и действительно важным фактором в инструменте скорости страницы Google, можно найти хорошую деталь здесь http://code.google.com/speed/page-speed/docs/payload.html#DeferLoadingJS