Gerhard: image.onload/onerror timing problem

Hallo,

ich möchte den Aufbau einer HTML/Javascript-Seite abhängig von der Existenz einer GIF-Datei steuern. Dazu versuche ich, die GIF-Datei in ein new Image() Objekt zu laden und über die onerror/onload-Handler eine Boolsche Variable zu setzen, über die ich dann den restlichen Seitenaufbau steuern kann.

zgifex = false;
zgif = new Image();
zgif.onload = function() { zgifex = true };
zgif.src = path + some.gif';
<more javascript>
<do something with zgifex>

Das klappt auch einwandfrei auf meiner lokalen Maschine im file://-Protokoll, aber so bald ich auf einen Webserver wechsle, ändert der IE6 seinen internen Ablauf und verschiebt das Laden der GIF-Datei konsequent ganz an das Ende des Seitenaufbaus und meine Logik geht den Bach runter. Simple Tricks wie eine Schleife hinter das zgif.src Statement, die die Aktivierung des .onload abwarten soll, lassen den IE kalt und er führt die Schleife bis zum St.Nimmerleinstag aus, statt zu versuchen das Bild zu laden. Experimente mit .complete waren auch erfolglos.

Hat jemand eine Idee, wie ich den gedachten Ablauf zuverlässig in die richtige Reihenfolge bekommen kann? - es ist mir schon klar, dass Eventhandler sich nicht ohne weiteres an irgendwelche Ablaufreihenfolgen halten.

Randbedingung: IE als Zielsystem ist gesetzt (Das Ganze ist Teil einer Intranetanwendung und IE ist bei uns Firmenstandard).

Gerhard

  1. Hi,

    Hat jemand eine Idee, wie ich den gedachten Ablauf zuverlässig in die richtige Reihenfolge bekommen kann?

    Geht nicht.

    Aber Du könntest das Dokument verstecken (display:none) und es enthüllen, falls die Grafik vorhanden ist.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Hallo,

    zgifex = false;
    zgif = new Image();
    zgif.onload = function() { zgifex = true };
    zgif.src = path + some.gif';
    <more javascript>
    <do something with zgifex>

    Hat jemand eine Idee, wie ich den gedachten Ablauf zuverlässig in die richtige Reihenfolge bekommen kann? - es ist mir schon klar, dass Eventhandler sich nicht ohne weiteres an irgendwelche Ablaufreihenfolgen halten.

    Hm, logischerweise muss der Code, der beim onload bzw. onerror ausgeführt werden soll, in der angegebenen Event-Handler-Funktion ausgeführt bzw. aufgerufen werden. Wann dies stattfindet, also während oder nach Abschluss des Ladens und Anzeigen des body-Dokumentinhalts, kannst du nicht wissen, daher müssen die Scripte, die den Aufbau des Dokumentkörpers regeln sollen, erst mit dem onload- bzw. onerror-Event ihre Arbeit starten, also über DOM bzw. innerHTML bzw. Style-Änderungen am absichtlich lückenhaften bzw. unfertigen Dokumentkörper herumbasteln. Dabei sollten wie gesagt darauf reagieren, dass die Objekte unter document noch nicht vollständig zur Verfügung stehen.

    Mathias