Aller au contenu

Chargement des ressources JavaScript : onload et onerror

Dans le monde dynamique du développement web, maîtriser JavaScript est une étape clé pour améliorer la fonctionnalité des sites et l'interaction utilisateur. Un aspect crucial de JavaScript que les développeurs doivent comprendre est la gestion du chargement des ressources. Ce guide explore les méthodes onload et onerror, en fournissant des exemples clairs et des conseils pratiques pour gérer efficacement des ressources telles que les images, les scripts, et plus encore.

Gérer le chargement des ressources avec l'événement onload

Qu'est-ce que l'événement onload ?

L'événement onload en JavaScript est déclenché lorsqu'une ressource a entièrement chargé. Cela inclut les images, les scripts, les feuilles de style et d'autres fichiers multimédias. Il est particulièrement utile lorsque des actions doivent être entreprises uniquement après le chargement complet des ressources.

Exemple : Afficher une image après son chargement complet

Pour illustrer, imaginez un scénario où vous souhaitez afficher une image uniquement après qu'elle soit entièrement chargée afin d'éviter d'afficher une image partielle ou cassée.


html
<div>Here you see the w3docs logo when the page is loaded.</div>
<br />
<div id="imageContainer" style="background-color: grey;"></div>
<script>
document.addEventListener('DOMContentLoaded', function() {
    var img = new Image();
    img.onload = function() {
        document.getElementById('imageContainer').appendChild(img);
    };
    img.src = 'https://www.w3docs.com/build/images/logo-color-w3.png';
});
</script>

Ce script garantit que l'image est ajoutée au div #imageContainer uniquement après son chargement complet, améliorant ainsi l'expérience utilisateur en empêchant l'affichage d'une image incomplète.

Utiliser l'événement onerror pour la gestion des erreurs

Qu'est-ce que l'événement onerror ?

L'événement onerror est essentiel pour un développement web robuste. Il se déclenche lorsqu'une erreur survient lors du chargement d'une ressource externe, comme un script ou une image. Cet événement est crucial pour gérer les erreurs avec élégance et garantir que l'expérience utilisateur reste ininterrompue.

Exemple : Gestion des erreurs pour un chargement d'image échoué

Imaginez un scénario où une image ne parvient pas à charger en raison d'un lien cassé ou d'un problème de serveur. En utilisant l'événement onerror, vous pouvez proposer une solution de repli ou notifier l'utilisateur. Dans l'exemple suivant, vous recevrez l'alerte d'erreur personnalisée que nous avons créée dès que vous ouvrirez la page « Essayez-le vous-même », car le lien de l'image fourni n'est pas valide.


html
<div>If there was no error, you could see an image below. But it's a broken link!</div>
<br />
<div id="imageContainer" style="background-color: grey;"></div>
<script>
const img = new Image();
const imageContainer = document.getElementById('imageContainer');
img.onerror = function() {
    imageContainer.innerHTML = 'An error happened.';
};
img.onload = function() {
    imageContainer.appendChild(img);
};
img.src = 'https://www.w3docs.com/build/images/broken-link.png';
</script>

Dans cet exemple, si l'image ne parvient pas à charger, l'utilisateur est averti par un message, améliorant ainsi l'expérience utilisateur grâce à une gestion transparente de l'erreur.

Exemple : Chargement d'un script ou d'une feuille de style

Le même schéma s'applique aux éléments <script> et <link>. Vous pouvez les créer dynamiquement et y attacher des gestionnaires onload/onerror :

html
<script>
function loadScript(url) {
    const script = document.createElement('script');
    script.src = url;
    script.onload = () => console.log('Script loaded successfully');
    script.onerror = () => console.error('Failed to load script');
    document.head.appendChild(script);
}
loadScript('https://example.com/app.js');

function loadStylesheet(url) {
    const link = document.createElement('link');
    link.rel = 'stylesheet';
    link.href = url;
    link.onload = () => console.log('Stylesheet loaded successfully');
    link.onerror = () => console.error('Failed to load stylesheet');
    document.head.appendChild(link);
}
loadStylesheet('https://example.com/styles.css');
</script>

Optimiser les performances web grâce à la gestion des événements

L'optimisation des performances web implique la gestion des séquences de chargement des ressources et la gestion élégante des échecs. Les événements onload et onerror sont particulièrement précieux pour l'injection dynamique de ressources. Au lieu de coder en dur tous les actifs dans le HTML, vous pouvez charger des ressources non critiques à la demande. Lorsqu'une ressource ne parvient pas à charger, l'événement onerror se déclenche, vous permettant de mettre en œuvre une logique de repli, comme le remplacement d'une image cassée par une image de remplacement ou la réessai d'une requête de script échouée. En combinant ces événements avec un rendu progressif, vous vous assurez que le contenu critique apparaît immédiatement tandis que les ressources secondaires chargent en arrière-plan, maintenant ainsi une expérience utilisateur fluide même dans des conditions réseau défavorables.

Conclusion

Comprendre et implémenter les événements onload et onerror en JavaScript est fondamental pour tout développeur web souhaitant améliorer la fiabilité et les performances de ses applications. En utilisant efficacement ces événements, les développeurs peuvent garantir une gestion optimale des ressources, améliorant ainsi à la fois les performances et l'expérience utilisateur de leurs sites. Les exemples fournis offrent un point de départ pour implémenter ces techniques dans divers scénarios, favorisant une compréhension et une maîtrise plus approfondies du chargement des ressources en JavaScript.

Pratique

Quelles sont les tâches gérées par les événements 'onload' et 'onerror' en JavaScript ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.