Lightbox, Chrome ruft Bilder doppelt ab

  • So, nun mal wieder eine echte Frage. Bei meiner Lightbox ruft Chrome bei einem Klick auf ein Bild, das Bild doppelt ab. Er ignoriert sogar den Cache. Ich habe aber absolut keinen Schimmer warum Chrome das tut und es macht nur er, kein anderer Browser.


    Lightbox kennt ja eigentlich jeder, man klickt ein Bild an und das wird dann eben in einer Box angezeigt und nicht als eigene Seite. Nur eben das Problem, dass alle Zugriffe doppelt sind.


    Habe das nun so weit runtergebrochen, dass ich eigentlich sicher bin (bin ich das?), dass das hier für verantwortlich sein muss:



    Hier gibt es also zwei Aufrufe von ".src", das muss aber eigentlich so, zumindest weiß ich es nicht besser.


    Lasse ich den letzten Aufruf weg, also die letzte Zeile, dann bekomme ich einen Fehler. Lasse ich den im "onload" weg, dann kommt kein Fehler, aber auch kein Bild, obwohl Chrome eines geladen hat, nämlich das über die letzte Zeile im Code.


    In Chrome wird das Bild aus der letzten Code-Zeile zuerst abgerufen, das aus dem inneren "onload" dann noch mal. Angezeigt wird das aus dem Inneren. Die Funktion showImage kann man ignorieren, die macht nix außer Display von "none" auf "block" zu setzten.


    Dachte ja erst, das steht da nur so in der Auswertung von Chrome, aber nein, der ruft wirklich zwei mal ab.


    Code
    1. [30/Nov/2019:19:42:33 +0100] "GET /bilder/webseite/halloween-bild.jpg HTTP/2.0" 200 83197
    2. [30/Nov/2019:19:42:33 +0100] "GET /bilder/webseite/halloween-bild.jpg HTTP/2.0" 200 83128


    Hat einer eine Idee?

  • Ist das nur Lightbox oder auch im Live Test so?

    Also wenn du selber deine Webseite aufrufst und das 2 mal geladen wird, ja dann liegt es am Script. Ansonsten liegt es an Lighthouse.


    Hab ja schon deine Seite gefunden. Teste ich gleich auch mal...


    Edit: ups. habs verwechselt.

    Das ist die Frage der Fragen ob das aus dem Browser Cache genommen wird. Eigentlich sollte es so, ich schau mal was anderes, aber mod_headers oder expires haste ja sicherlich drin...

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.
    Ich denke, also BING ich :)


    Support 24h Bereitschaft 0163 2161604 - NUR Für Kunden von SEO NW! Faires Hosting - Alternative Suchmaschinen

  • Alex, ich rede von "Lightbox", nicht "Lighthouse". Also dieses "Lightbox", das eben Bilder so wie hier im Forum in einem Overlay anzeigt und nicht dafür eine eigene Seite aufmacht.


    Der Chrome lädt mir die Dinger doppelt. Das oben mit dem Auszug aus dem Server-Log ist nur ein Beispiel. Es ist auf allen Domänen, wo Lightbox benutzt wird.


    Genau das mit dem "nicht einfach so ausgeben", das ist ja der Sinn des kleinen JS-Codes. Bild erst mal laden, das ist nur in JS, nicht eingebunden. Und wenn geladen, also "onload" gefeuert wird, den Ladekreisel entfernen, dann das Bild einhängen und anzeigen. Genau da an der Stelle scheint es ja zu hängen.


    Wobei ich nun beim besten Willen noch nicht weiß, wo das zweite "Bild" her kommt. Vielleicht kommt es auch vom "Mausklick" an sich, sollte aber nicht sein. In der Lightbox wird jedenfalls das zweite geladene Bild (das doppelte) angezeigt, nicht das erste.

  • So Alex, ich dachte anfangs auch, das liegt am Script. Ist schon an die 10 Jahre im Einsatz und eben nie modernisiert worden bzw. immer mal wieder erweitert, aber nie wirklich geändert. Was ich nun aber festgestellt habe -> Auch das Originalscript, in einer nagelneuen Fassung inkl. JQuery hat das "Doppel-Laden" der Bilder im Chrome. Irgendwie ist Chrome da sehr eigen. Den Cache ignoriert er völlig bei den Bildern (aber nur in der Lightbox, sonst nicht) und lädt sie eben definitiv zwei mal, an anderer Stelle ist der aber so hartnäckig, dass man kaum ein CSS geändert bekommt und der doofe Browser das doch bitte nun auch mal neu lädt. Da hilft teils noch nicht mal ein STRG+F5.


    Aber interessant, was man da so allen in seinen Scripten findet. Da ist ja sicherlich 30% nur noch unnötiger Ballast, das inzwischen mit einer Code-Zeile nativ geht oder sogar so unnötig, dass es weg kann, weil die Funktion gar nicht aufgerufen wird ;)