Lazy Load et Promise.all

Firefox implémente dorénavant le « lazy loading » des images. Je l'ai découvert par hasard en me rendant compte que la gallerie d'images ne fonctionnait plus correctement...

Pourquoi ne fonctionne-t-elle plus ? Parce que j'effectue des traitements quand toutes les images de la pages sont chargées grâce à un Promise.all ; Hors, je génère le code HTML des images avec l'attribut « loading » à lazy depuis quelques temps déjà ; donc, le navigateur ne charge que les images qui sont dans le viewport ; donc mon Promise.all n'est jamais résolu, ou ne l'est que quand l'utilisateur scrolle jusqu'à la dernière image ; donc mes traitements ne sont pas effectué à temps… Deux choses donc :

  • Je vais modifier la gestion des galleries pour tenir compte de ce nouveau paramètre, sachant aussi que certains traitements peuvent être effectués sans nécessairement que toutes les images soient chargées (défaut de conception)
  • Il va falloir penser à débrancher les mécanismes de lazy loading d'images de ma librairie javascript, comme tant d'autres fonctionnalités qui sont d'abord nées dans la communauté des devs web et qui ont finit par faire leur chemin dans les specs officielles. J'en tiens dèjà compte dans certains mais pour d'autres, la tâche est plus ardue car ils dépendent aussi de la manière dont les texte contenant l'image a été écrit.
    • Abandon donc de lazy-pic qui transformait un lien en image quand celui-ci allait entré dans le viewport. Dans les textes écrits en markdown, un simple remplacement suffit (s/[°°lazy-pic°°/![/g).
    • Abandon aussi de lazy-pics qui gérait lui une liste de liens transformés de la même manière en images quand ils entraient dans la zone visible. J'en ai profité pour corriger un système de Slides qui ne fonctionnait plus vraiment depuis la mise en place de ce système.
    • Correction enfin côté serveur de certaines génération de html qui évitait d'écrire l'attribut src de certaines images, toujours pour utiliser le lazy loading perso.