web-dev-qa-db-fra.com

Pourquoi le chargement d'un code javascript externe "différé asynchrone" a-t-il lieu avant le chargement de la page?

Recaptcha recommande de charger son script de la manière suivante:

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

J'ai ajouté ceci à la section head du document HTML et vérifié avec Chrome lors de son chargement. Chrome indique qu'il est chargé avant le chargement de la page (l'onglet réseau de chrome devtools indique la fin du chargement de la page avec une ligne rouge verticale et le script ci-dessus est chargé avant.

Pourquoi donc? Ne devrait-on pas ajouter différé async comme recommandé par Google différer le chargement du script après le chargement de la page?

2
Tom

La page n'est entièrement chargée que lorsque toutes les ressources liées (y compris <script async defer) ont été chargées. C'est à ce moment que l'événement onload est déclenché.

Cependant, l'événement DOMContentLoaded risque de se déclencher avant this - ce qui sera probablement avant le async defer scripts ont été chargés. (Je dis "probablement" - si le navigateur est capable de déterminer qu'il peut charger le script dans un autre thread en même temps sans ralentir les choses, alors j'imagine que ce sera probablement le cas, mais sans aucune garantie. )

2
MrWhite