*Markus: Bild wird nicht rechtzeitig geladen?

Hallo,

ich habe ein besonders kniffliges Problem. Ein Popup soll genauso groß sein, wie das zu ladende Bild. Dabei soll eine Hintergrundfarbe definiert werden können, wodurch ich in dem Popup eine HTML-Datei simulieren muss. Der window.open-Aufruf muss ganz zu Beginn der Funktion stehen, da sonst der Popup-Blocker des Browser das Popup nicht mehr öffnet.
Im Prinzip funktioniert das Ganze. Ein lästiges Problem gibt es allerdings:
Die Grafik wird beim ersten Klicken des Links nicht geladen, wie auch das Fenster nicht vergrößert wird, da es keine Höhen- und Breitenangaben des Grafikobjekt bekommt.
Beim zweiten Mal Klicken des Links funktioniert es plötzlich wie es soll. Komischerweise funktioniert es auch, wenn ich eine alert-Funktion nach der Grafikobjektzuweisung schreibe. Klicke ich das Alert-Fenster im Browser weg, wird das Popup beim ersten Mal richtig geladen, was mich zu der Ansicht führt, dass die Grafikobjekt nicht rechtzeitig geladen wird, um verwendet werden zu können. Was kann ich tun, ohne vielleicht sämtliche Grafiken schon beim Laden der HTML-Datei in den Speicher zu laden?
Hier das Beispiel: http://test.pithax.net/popuptest/Popup.html

Markus

  1. hi,

    Ein lästiges Problem gibt es allerdings:
    Die Grafik wird beim ersten Klicken des Links nicht geladen, wie auch das Fenster nicht vergrößert wird, da es keine Höhen- und Breitenangaben des Grafikobjekt bekommt.

    Die Größe der Grafik ist schlicht und einfach noch nicht bekannt.

    Beim zweiten Mal Klicken des Links funktioniert es plötzlich wie es soll.

    Das ist nicht überraschend - der Browser hat die Grafik jetzt bereits in seinem Cache, also auch ohne längeren Ladevorgang Zugriff auf ihre Maße.

    Komischerweise funktioniert es auch, wenn ich eine alert-Funktion nach der Grafikobjektzuweisung schreibe.

    Auch der alert verzögert im günstigen Falle lange genug, so dass die Grafik im Hintergrund geladen werden kann, ihre Maße anschliessend bekannt sind.

    Klicke ich das Alert-Fenster im Browser weg, wird das Popup beim ersten Mal richtig geladen, was mich zu der Ansicht führt, dass die Grafikobjekt nicht rechtzeitig geladen wird, um verwendet werden zu können.

    Natürlich, was denn sonst.

    Was kann ich tun, ohne vielleicht sämtliche Grafiken schon beim Laden der HTML-Datei in den Speicher zu laden?

    Verabschiede dich von dem Anachronismus, der auf den Namen Popup hört - warum dessen Existenzberechtigung mit der Verbeitung von Tabbed Browsing ihr Ende gefunden hat, ist hier sehr gut erläutert worden.

    Schau dir stattdessen lightbox.js an, ggf. lightbox 2.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo,

      danke für deine Tipps. Ich habe bereits versucht denjenigen von einer Nicht-JS-Lösung zu überzeugen, aber die Seite ist bereits so gestaltet, dass andere Lösungen nur mehr schwer zu verwirklichen gewesen wären.

      Markus

  2. Hallo *Markus,

    ich vermute, dass das Bild noch nicht geladen ist, wenn du die Größenwerte ausliest. Benutze entweder den onload-Event des Bildes, oder spendier dem body des Popups ein onload und passe die Größen im Popup an.

    Gruß, Jürgen