Maison >interface Web >js tutoriel >Chargez un JavaScript non bloquant avec HTML5 Async et reportez-vous
Le navigateur commencera à télécharger File.js et autres scripts différés en parallèle sans arrêter le traitement de la page.defer
a été implémenté dans Internet Explorer version 4.0 - il y a plus de 12 ans! Il est également disponible dans Firefox depuis la version 3.5. Bien que tous les scripts différés soient garantis pour s'exécuter en séquence, il est difficile de déterminer quand cela se produira. En théorie, cela devrait se produire après que le Dom s'est complètement chargé, peu de temps avant l'événement DomContent. Dans la pratique, cela dépend du système d'exploitation et du navigateur, que le script soit mis en cache, et ce que font les autres scripts à l'époque.
<script src="file.js" async></script>Async est identique à déférer, sauf que le script s'exécute à la première occasion après téléchargement (un attribut facultatif on peut être ajouté pour exécuter une fonction spécifique). Vous ne pouvez pas garantir que les scripts s'exécuteront en séquence, mais ils se seront chargés au moment où l'événement Window Onload tire. IE9 n'a pas encore soutenu Async , mais l'équipe IE pourrait facilement l'ajouter comme un alias pour différer. Vous pouvez utiliser à la fois l'async et le report pour prendre en charge tous les navigateurs - même IE4. Peut-être qu'en quelques mois, nous aurons enfin une méthode de chargement JavaScript native et non bloquant qui fonctionne dans tous les navigateurs. Il se souvient où un script asynchronisé a été chargé sur la page, il est donc possible d'utiliser le document. Écrire ou modifier la DOM.La fonctionnalité profiterait immédiatement aux widgets et aux publicités qui chargent le chargement de la page. Espérons que Microsoft, Mozilla et WebKit suivraient l'exemple de l'opéra.
Async et Defer sont des attributs qui peuvent être ajoutés à une balise de script dans HTML pour contrôler comment les fichiers JavaScript sont chargés et exécutés. L'attribut async charge et exécute le script de manière asynchrone avec le reste de la page Web. Cela signifie que le script est exécuté dès qu'il est chargé, sans attendre que le reste de la page Web se charge. D'un autre côté, l'attribut de différence charge également le script de manière asynchrone, mais il dérange l'exécution du script jusqu'à ce que le reste de la page Web soit chargé. Cela peut être utile pour les scripts qui reposent sur le DOM entièrement chargé avant de pouvoir fonctionner.
Le placement du code JavaScript dans un document HTML peut avoir un impact significatif sur les performances de chargement de votre page Web. Traditionnellement, les scripts sont placés dans la section tête du document HTML. Cependant, cela peut bloquer le rendu de la page Web jusqu'à ce que le script soit chargé et exécuté. Pour éviter cela, il est souvent recommandé de placer des scripts juste avant la balise du corps de clôture. Cela permet au document HTML de se charger et de rendre avant l'exécution du script. Alternativement, vous pouvez utiliser les attributs asynchronisés ou différés pour contrôler le chargement et l'exécution des scripts sans bloquer le rendu de la page Web.
What does non-blocking mean in JavaScript?
Comment le navigateur gère-t-il plusieurs scripts avec des attributs asynchronisés ou de déférer? Disponible, sans ordre particulier. Cela signifie que les scripts qui sont plus petits ou plus proches du haut du document HTML peuvent être exécutés avant les autres. Lorsque plusieurs scripts sont marqués de l'attribut de différence, le navigateur les charge dans l'ordre dans lequel ils apparaissent dans le document HTML, mais dérange leur exécution jusqu'à ce que le reste de la page Web soit chargé. Cela garantit que les scripts sont exécutés dans le bon ordre, même s'ils sont chargés de manière asynchrone.
Oui, vous pouvez utiliser à la fois les attributs asynchronisés et différés dans la même balise de script. Cependant, leur comportement dépend du navigateur. Dans les navigateurs modernes qui prennent en charge les deux attributs, l'attribut asynchronisé a priorité sur l'attribut de différence. Cela signifie que le script sera chargé et exécuté de manière asynchrone, dès qu'il sera disponible. L'attribut de report est ignoré. Dans les anciens navigateurs qui ne prennent pas en charge l'attribut asynchrone, l'attribut de différence est utilisé à la place, s'il est présent.
Comment puis-je vérifier si un navigateur prend en charge l'attribut async ou de retour?
Puis-je utiliser l'attribut async ou différer avec des scripts en ligne?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!