Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
Добрый день уважаемые! Читал описание этих атрибутов. В описании сказано что и async и defer работают паралельно с загрузкой страницы. А уж тем более defer, который ждет пока весь HTML будет готов. Я попробовал это на своем примере. Подключил скрипт. Код: javascript 1. 2. 3. к документу Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Итог:- alert и HTML документ загрузились одновременно, я же ожидал что появится сначала HTML а потом появится alert Подскажите пожалуйста в чем я неправ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 10:34 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
vdekameron, А как ты думаешь загружаются и выполняются скрипты?-) http://frontender.info/script-loading/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 10:40 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
DarkMasterА как ты думаешь загружаются и выполняются скрипты?-) Я же написал как я думаю. Так как прочитал что должно сработать, так и думаю. Вот выдержка из статьи которые вы скинули(это о загрузке 2 скриптов с атрибутом defer): - "браузер скачает оба скрипта параллельно и выполнит их прямо перед тем, как сработает событие DOMContentLoaded, в правильном порядке." А вот выдержка из другого источника https://learn.javascript.ru/onload-ondomcontentloaded:- "Если в документе есть теги <script>, то браузер обязан их выполнить до того, как построит DOM. Поэтому событие DOMContentLoaded ждёт загрузки и выполнения таких скриптов. Исключением являются скрипты с атрибутами async и defer, которые подгружаются асинхронно." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 11:38 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
vdekameron, Я думаю что если используется атрибуты defer или async то сначала должна произойти загрузка HTML содержимого а уж потом выполниться скрипт, который при этом не должен мешать рендерингу. Вот тут это явно видно на примере. https://learn.javascript.ru/external-script ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 11:41 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
vdekameron, Async - говорит скрипту, что порядок его выполнения не важен, браузер его подхватит сразу. Если defer - скрипт выполнится после парсинга, но до DomComplete. Если уж надо, чтобы скрипт выполнялся после загрузки основного контента - стоит смотреть на OnLoad у документа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 11:50 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
DarkMasterЕсли уж надо, чтобы скрипт выполнялся после загрузки основного контента - стоит смотреть на OnLoad у документа. Ну или внедрять скрипт на лету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 11:54 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
DarkMasterНу или внедрять скрипт на лету. Имеется в виду document.createElement("script") ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 12:37 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
vdekameron, Автор показывает данный пример http://plnkr.co/edit/?p=preview и объясняет это так:-При запуске вы увидите, что вся страница отобразилась тут же, а alert из внешнего скрипта появится позже, когда загрузится скрипт. Вот поэтому у меня и путаница возникла. У него же все получилось. Сначала загрузилась страница и появилось HTML содержимое, а уж потом выполнился javascript ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 12:46 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
vdekameron, Тут еще и браузеры вносят лепту - кто в лес, кто по дрова. IE тот же разных версий async/defer понимает поразному. P.S. Да, имелся в виду createElement("script"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 13:07 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
DarkMasterНу или внедрять скрипт на лету. Вот и так попробовал...(вообще говоря использование async или внедрение скрипта на лету должно работать одинаково...таки да) Код: javascript 1. 2. 3. 4. но результат тот же. Все же я не понимаю почему у меня не выходит...Везде пишут что использование async или тем более defer должны работать асинхронно...то есть если скрипт тяжелый то страница себе загружается а скрипт уж когда загрузится тогда загрузится....но на моем примере почему то это не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 13:21 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
vdekameron, async и defer - только для внешних скриптов. Ты же делаешь внутренний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 13:55 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
vdekameron, Кстати, что ты хочешь сделать? Чтобы скрипт выполнился до загрузки страницы или уже после? Если после - повесь его на OnLoad() - должно нормально отработать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 14:03 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
DarkMasterasync и defer - только для внешних скриптов. Ты же делаешь внутренний. https://learn.javascript.ru/external-script авторДля продвинутого читателя, который знает, что теги <script> можно добавлять на страницу в любой момент при помощи самого javascript, заметим, что скрипты, добавленные таким образом, ведут себя так же, как async. То есть, выполняются как только загрузятся, без сохранения относительного порядка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 14:17 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
DarkMasterКстати, что ты хочешь сделать? Чтобы скрипт выполнился до загрузки страницы или уже после? Если после - повесь его на OnLoad() - должно нормально отработать. Я ничего не хочу сделать) я учусь) наткнулся на расхождения в описанном авторе примере....еще раз повторю что у него же получилось реализовать это(сначала загрузку документа, во время того как работает скрипт) http://plnkr.co/edit/?p=preview ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 14:19 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
vdekameron, У тебя скрипт без src. Атрибуты async/defer работают только в том случае, если назначены на внешние скрипты, т.е. имеющие src. При попытке назначить их на обычные скрипты <script>…</script>, они будут проигнороированы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 14:22 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
DarkMasterУ тебя скрипт без src. Я ничего против этого не имею) Я лишь имел в виду то, что если скрипт без src то ВЕДЕТ себя ТАК ЖЕ как если бы был src и атрибут async ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 14:40 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
vdekameronDarkMasterУ тебя скрипт без src. Я ничего против этого не имею) Я лишь имел в виду то, что если скрипт без src то ВЕДЕТ себя ТАК ЖЕ как если бы был src и атрибут async Что Вы подразумеваете под ТАК ЖЕ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2016, 20:57 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
skyANAЧто Вы подразумеваете под ТАК ЖЕ? Добрый день. То есть, выполняются как только загрузятся, без сохранения относительного порядка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 07:15 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
vdekameronskyANAЧто Вы подразумеваете под ТАК ЖЕ? Добрый день. То есть, выполняются как только загрузятся, без сохранения относительного порядка. А разве скрипты без src должны как-то иначе выполняться? И что такое "сохранения относительного порядка"? P.S.: Было бы здорово, если бы Вы, перед тем как ссылку с Plunker-а сюда вставить, Save там нажимали, чтобы мы смогли посмотреть, что Вы там понаписали :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 08:30 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
skyANAА разве скрипты без src должны как-то иначе выполняться? Я не говорил что они должны иначе выполняться) Просто человек не понял что я написал, я пояснил. skyANAИ что такое "сохранения относительного порядка"? Это значит:- сначала выполняется меньший по размеру скрипт, даже если он будет не первый по порядку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2016, 09:10 |
|
||
|
атрибуты defer и async при подключении javaScript
|
|||
|---|---|---|---|
|
#18+
Помогите пожалуйста найти в спецификации async и defer.... не получается найти. Я все-таки хочу разобраться. Занимаюсь по https://learn.javascript.ru авторАтрибут async Поддерживается всеми браузерами, кроме IE9-. Скрипт выполняется полностью асинхронно. То есть, при обнаружении <script async src="..."> браузер не останавливает обработку страницы, а спокойно работает дальше. Когда скрипт будет загружен – он выполнится. По факту на примере: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 1) chrome - пока оба скрипта не загрузятся содержимое параграфов не отображается. Плюс еще к этому, выполняется первый bigWithAsync.js, хотя в этой же статье: авторПервым выполнится small.js, так как скрипты из-за async ведут себя совершенно независимо друг от друга, страница тоже от них не зависит. 2) firefox - тут вообще каша полная. Страница загружается одновременно с выполнением bigWithAsync.js, затем выполняется smallWithAsync.js и снова bigWithAsync.js(( а скрипта то всего два! 3) IE - страница загружается сразу но все-равно bigWithAsync.js загружается первым, хоть он и дольше, затем smallWithAsync.js 4) Opera повел себя абсолютно также как и chrome авторАтрибут defer Поддерживается всеми браузерами, включая самые старые IE. Скрипт также выполняется асинхронно, не заставляет ждать страницу, но есть два отличия от async. Первое – браузер гарантирует, что относительный порядок скриптов с defer будет сохранён. Второе отличие – скрипт с defer сработает, когда весь HTML-документ будет обработан браузером. По факту на примере: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 1) chrome - Снова нет асинхронности! Отрабатывает аналогично async(страница загружается только тогда, когда выполняется сначала bigWithDefer.js потом smallWithDefer.js 2) firefox - Тут картина получше но все равно не асинхронно. Страница загрузилась одновременно с загрузкой bigWithDefer.js, затем сработал smallWithDefer.js 3) IE - Все четко как и описано автором. 4) Opera - Точно также как chrome На всякий случай используемые скрипты: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. ну и для defer аналогичные P/S Люди что говорит спецификация по этому поводу??? Ведь она должна вносить однообразие, которого просто нет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 23:34 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=39264691&tid=1444739]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 284ms |
| total: | 433ms |

| 0 / 0 |
