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:
// Bild erst anzeigen, wenn es vorab geladen wurde
imgPreload = new Image();
imgPreload.onload=function()
{
objlightboxImage.src = imgPreload.src;
objlightboxImage.width = imgPreload.width;
objlightboxImage.height = imgPreload.height;
resizeImageContainer(imgPreload.width, imgPreload.height);
showImage();
return false;
}
imgPreload.src = imageArray[activeImage][0];
Alles anzeigen
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.
[30/Nov/2019:19:42:33 +0100] "GET /bilder/webseite/halloween-bild.jpg HTTP/2.0" 200 83197
[30/Nov/2019:19:42:33 +0100] "GET /bilder/webseite/halloween-bild.jpg HTTP/2.0" 200 83128
Hat einer eine Idee?