Атрибут async тега <script> — асинхронне завантаження


автор: с3с

Загальний опис

автор: NagarD

Порада

Не використовуйте одночасно атрибут async і defer, сучасні браузери в цьому випадку будуть використовувати тільки async.

автор: с3с
Нотатка

Браузер Internet Explorer підтримує цей атрибут тільки з версії 10.0.

автор: с3с

Синтаксис

<script async>...</script>

Атрибут async може отримувати єдине значення:

async

Значення атрибута потрібно тільки в XHTML (<script async = "async">).

автор: с3с

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 3.6 ≤4 15 12 ≤11
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 ≤3.2

Приклади

+ запропонувати свій приклад у пісочниці

Найпростіший приклад використання HTML атрибута <async> теґа <script>

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>async</title>
  <script async src="scripts/async.js"></script>
 </head>
</html>
автор: с3с

Три смуги часу для одного й того самого зовнішнього скрипта, підключеного в head: звичайний, з defer і з async. Наведіть на будь-який відрізок — він підсвітиться. Видно головне: звичайний скрипт розриває розбір сторінки навпіл, defer відкладає виконання до кінця розбору і тримає порядок, async виконується щойно завантажився — будь-коли, і порядку не обіцяє.

HTML

<div class="chart">
    <h4>1. &lt;script src="app.js"&gt; — розбір спиняється</h4>
    <div class="track">
        <i class="seg parse" style="left:0;width:22%">розбір HTML</i>
        <i class="seg wait" style="left:22%;width:30%">чекаємо файл</i>
        <i class="seg run" style="left:52%;width:12%">виконання</i>
        <i class="seg parse" style="left:64%;width:36%">розбір HTML далі</i>
    </div>
    <p class="hint">Сторінка стоїть увесь час завантаження. Саме через це
        скрипти колись переносили в кінець body.</p>

    <h4>2. &lt;script defer src="app.js"&gt; — після розбору, у порядку розмітки</h4>
    <div class="track">
        <i class="seg parse" style="left:0;width:58%">розбір HTML</i>
        <i class="seg load" style="left:22%;width:30%;top:26px">завантаження паралельно</i>
        <i class="seg run" style="left:58%;width:12%">виконання</i>
        <i class="seg dcl" style="left:70%;width:30%">DOMContentLoaded</i>
    </div>
    <p class="hint">Розбір не переривається; порядок кількох defer-скриптів
        гарантований. Це варіант за замовчуванням для коду сторінки.</p>

    <h4>3. &lt;script async src="app.js"&gt; — щойно завантажився</h4>
    <div class="track">
        <i class="seg parse" style="left:0;width:38%">розбір HTML</i>
        <i class="seg load" style="left:4%;width:30%;top:26px">завантаження паралельно</i>
        <i class="seg run" style="left:38%;width:12%">виконання</i>
        <i class="seg parse" style="left:50%;width:20%">розбір далі</i>
        <i class="seg dcl" style="left:70%;width:30%">DOMContentLoaded</i>
    </div>
    <p class="hint">Момент виконання плаває: він залежить від мережі й кеша,
        тому зелений прямокутник «виконання» може опинитися будь-де на смузі —
        навіть після DOMContentLoaded. Порядку між кількома async немає.</p>
</div>

<p class="legend"><b>Пам'ятка.</b> async без src не робить нічого. document.write
    з async-скрипта мовчки зникає. Динамічно створений скрипт уже асинхронний.</p>

CSS

.chart {
    max-width: 640px;
}

h4 {
    margin: 22px 0 8px;
    font-size: 1em;
}

.track {
    position: relative;
    height: 52px;
    border: 1px solid #c9ced6;
    border-radius: 4px;
    background: repeating-linear-gradient(90deg, #f6f9ff 0 9.9%, #eef3fb 10% 10%);
}

.seg {
    position: absolute;
    top: 0;
    height: 24px;
    box-sizing: border-box;
    padding: 0 6px;
    border-radius: 3px;
    color: #fff;
    font: 600 11px/24px system-ui, sans-serif;
    font-style: normal;
    white-space: nowrap;
    overflow: hidden;
}

.seg:hover {
    outline: 2px solid #12203a;
    z-index: 2;
}

.parse {
    background: #2f6fd0;
}

.wait {
    background: #d64545;
}

.run {
    background: #3a9a4f;
}

.load {
    background: #f2b134;
    color: #4a3300;
}

.dcl {
    background: transparent;
    border-left: 3px dashed #7a4fbf;
    color: #5a3a99;
    top: 26px;
}

.hint {
    max-width: 600px;
    margin: 8px 0 0;
    color: #5a6472;
    font-size: .9em;
}

.legend {
    max-width: 640px;
    margin: 24px 0 0;
    padding: 8px 12px;
    border-left: 6px solid #d64545;
    background: #fff4f4;
    font-size: .9em;
}
автор: NagarD

Різниця між HTML 4.01 та HTML5


Атрибут вважається новим в HTML 5.


Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід