Problem mit nativem loading="lazy"

  • Einen schönen guten Morgen,


    Ich habe mich mal mit "Lazy Loading" von Bildern beschäftigt und musste feststellen, dass die neue native Methode ab Firefox 75 bei Bildern mit Captions leider nicht zufriedenstellend funktioniert.


    Hier mal eine (leider auf Englisch verfasste) Beschreibung, was "Lazy Loading" ist, für jene, die davon vielleicht noch nicht gehört/gelesen haben:


    https://developer.mozilla.org/…/Performance/Lazy_loading


    Es geht, kurz zusammengefasst, um die Möglichkeit, Bilder erst vollständig zu laden, wenn sie sich im Sichtbereich des Browserfensters befinden und vom Benutzer theoretisch gesehen werden können, um das vom Internetprovider zur Verfügung gestellte Datenkontingent nicht unnötig zu belasten und die Ladezeiten der betreffenden Seite zu verringern.


    Was Joomla! betrifft, funktioniert diese Methode in Firefox mit einem entsprechenden Override, z. B. in "intro_image.php" für Vorschaubilder, recht gut, sofern ihnen keine Captions angehängt werden. Dem dafür erforderlichen Div, in dem das Bild und die "Credits" eingebettet sind, hängt Joomla! nämlich ein Style-Attribut an, das die Breite des anzuzeigenden Bildes angibt ("width").


    Wenn nun das Laden eines Bildes mittels "loading='lazy'" hintangehalten werden soll, ist seine Breite zunächst "0px". Diese liest Joomla! mittels Javascript aus und weist sie dem Div zu, wie vorhin erwähnt. (Joomla! kann schließlich nicht wissen, dass das Bild noch geladen werden muss.) Die Folge: Das Bild wird zwar geladen, aber wegen der Breite von "0px" nicht angezeigt, auch dann nicht, wenn es sich im Sichtbereich befindet.


    Nachdem die Entwicklung von Joomla! 3.x ja im Grunde genommen abgeschlossen ist, also nur noch Fehler behoben werden, und ich mich in Javascript nicht auskenne, habe ich beschlossen, "Lazy Loading" für unsere Seite wieder einzustampfen. Ich habe erfahren, dass es da ziemlich gute Plugins geben soll, die werde ich mir zur gegebenen Zeit ansehen. Schade nur, dass die native Möglichkeit des Browsers mit Joomla! derzeit nicht gut zusammenarbeitet, aber was soll's. Dieses Problem soll in Joomla! 4.x sowieso der Vergangenheit angehören. Ich wollte nur darauf aufmerksam machen, falls jemand mal dasselbe Problem hat.


    LG, Gerald

  • Eine andere, allerdings mühsame, Variante wäre, den Nicht-Responsiv-Joomla-Caption-Schon-Immer-Müll zu unterbinden. Bedeutet das Laden der caption.js zu unterbinden.


    Geladen wir das durch Zeilen

    Code
    JHtml::_('behavior.caption');

    Aber es sind leider diverse Overrides nötig, da die häufiger vorkommt. Und, wenn man die Captions für Bilder, die direkt im Editortext eingebettet sind mit hübschem HTML (figure und figcaption) gestalten will, ist das entweder nerviges Gebastel im Editor oder man benötigt ein weiteres Plugin. Entweder ein Content-Plugin oder ein Editor-xtd-Plugin. Vielleicht gibt es mittlerweile was, aber ich musste mir das damals selber schreiben.


    Für mich ist das, was du da beschreibst, also Zusammenhang mit lazyload, übrigens ein Bug und sollte eigentlich behoben werden, da der Punkt erreicht ist, wo nahezu ALLE modernen Browser das Attribut unterstützen.

    Ich habe erfahren, dass es da ziemlich gute Plugins geben soll

    Schau dir das von Kubik Rubik mal an. Kann dir allerdings nicht versprechen, dass das nicht auch Probleme mit caption.js hat.

  • Vielen Dank für Deine umfangreiche Antwort mit sehr wertvollen Tipps, Re:Later, ich schau mir das mal an. Im Moment fehlt mir ein bisschen die Zeit dafür.


    Für mich ist das, was du da beschreibst, also Zusammenhang mit lazyload, übrigens ein Bug und sollte eigentlich behoben werden, da der Punkt erreicht ist, wo nahezu ALLE modernen Browser das Attribut unterstützen.


    Ich trau mich nicht sagen, ob es ein Bug ist oder nicht. Im Joomla!-Core wird "Lazy Loading" meines Wissens nach nicht unterstützt. Und wo keine definierte Funktion, da eigentlich auch kein Fehler. (Ich vermute, die Entwickler sehen das auch so, und jetzt konzentriert sich sowieso alles auf Version 4.x.) Ich habe es vorerst mit nur einem Override (für Vorschaubilder) umgesetzt, das war im Grunde genommen keine Hexerei und ist bestimmt jedem zuzutrauen. Aber ich habe eben die Rechnung ohne Joomla!-Javascript gemacht.


    Wenn man sein Auto mit 100-Oktan-Benzin fährt, der Motor aber nur mit 95 Oktan rund läuft und 100 in den technischen Daten nicht explizit angegeben sind, wird mir der Hersteller den Motor nicht modifizieren, wenn die Entwicklung des Motors abgeschlossen ist.


    Wie dem auch sei, es ist schließlich kein Thema, das mir unter den Fingernägeln brennen würde. Ich kann auch warten, bis "Lazy Loading" mit Joomla! 4.x unterstützt wird. Im Moment habe ich sowieso andere Dinge zu erledigen. Aber trotzdem vielen Dank für die hilfreichen Infos! :thumbup:


    LG, Gerald

  • hi, das ist der aktuelle status lazy loading in joomla 3.x (https://github.com/zero-24/plg_content_imagelazyloading) und in den nächsten Tagen kommt auch eine pr für joomla 4.


    Das captchin Thema schaue ich mir an. danke! ich melde mich dann auch noch hier.

  • Hey zero24 ,


    Ich habe das Plugin soeben installiert und aktiviert, es hat die Bilder auf unserer "Frontpage" (https://www.verein-carpediem.org/) mit "loading='lazy'" versehen. :thumbup:


    Nun wollte ich den Versuch wagen und das beschriebene Problem mit den Credits zu einem Bild reproduzieren, dort fehlt das loading-Attribut allerdings: https://www.verein-carpediem.o…werb-2017/plaetze-1-bis-3 . Werden diese Bilder möglicherweise nicht berücksichtigt?


    LG, Gerald

  • Ja das Plugin macht das loading attribute nur für content aus genau dem Grund das eben das es nicht zu solchen Fehlern kommt wie du beschrieben hast. ;)


    Freut mich das das Plugin für dich funktioniert wird so hoffentlich auch zeitnah im 4.x core kommen :)

  • Wollte ich soeben machen, allerdings hat NoScript das Captcha verhindert und jetzt bin irgendwie doch registriert, der Benutzer ist allerdings gesperrt - "Deadlock"... (Das versprochene Mail zur Aktivierung des Kontos ist auch ausgeblieben.) :(


    An wen kann ich mich wenden, um den Benutzer zu entsperren bzw. entsperren zu lassen?


    LG, Gerald

  • Update: Das Mail zur Aktivierung des Kontos ist doch noch eingetrudelt, aber das Portal meckert irgendwas an der IP-Adresse rum:



    (Nein, wir haben keinen VPN-Dienst...)


    Ich probier's heute abend von meinem privaten Internetzugang.


    LG, Gerald