Jens: IE kennt bei onLoad noch nicht alle Objekte im Dokument ?!

Mahlzeit.

Große Seltsamlichkeiten begegnen mir bei der Arbeit mit IE5.5:

a) In einer Javascript-Funktion wird auf das document.forms - Array zugegriffen.

b) Mit <body onLoad="funktion();"> rufe ich diese Funktion auf.

c) Hin und wieder bekomme ich eine Fehlermeldung "Objekt erwartet"! Grund: Das document.forms - Array ist noch gar nicht bekannt! Obwohl doch die Seite komplett geladen ist und erst dann die Funktion ausgeführt wird.

d) Ich mache eine Ausgabe mit alert('blalbla') unmittelbar vor dem Zugriff auf document.forms - Nun ist document.forms immer bekannt!

e) Ich verzögere den Zugriff auf document.forms mit setTimeout() um 250ms - Auch so scheint document.forms immer bekannt zu sein!

Fazit:

Der Browser hat nicht immer alle im Dokument angelegten Objekte schon erzeugt, wenn onLoad aufgerufen wird. Wenn man ihm ein bißchen Bedenkzeit einräumt, klappt es aber dann doch.

Das ist doch Mist!

Ist jemandem von Euch sowas auch schonmal untergekommen oder leide ich inzwischen an totalem HatesGatesItmus?

Danke für den Beistand und viele Grüße
Jens

  1. hi!

    b) Mit <body onLoad="funktion();"> rufe ich diese Funktion auf.

    c) Hin und wieder bekomme ich eine Fehlermeldung "Objekt erwartet"! Grund: Das document.forms - Array ist noch gar nicht bekannt! Obwohl doch die Seite komplett geladen ist und erst dann die Funktion ausgeführt wird.

    ja - das ist mir auch schon passiert - ist irgendwie seltsam. aber man kann da nichts machen; zumindest hab ich keine vernünftige lösung.

    e) Ich verzögere den Zugriff auf document.forms mit setTimeout() um 250ms - Auch so scheint document.forms immer bekannt zu sein!

    ich hab auch verzögert, um somit zu gewährleisten, dass alle objekte da sin. ist zwar nicht die sauberste lösung, aber es funktioniert - bis mal ein browser länger als die angegebenen ms braucht :-(
    scheint irgendwie ein problem vom ie zu sein; oder was anderes - ich habe mich damals mit dem problem 2-3 tage herumgeschlagen, aufgegeben und diese verzögerung eingebaut.

    Das ist doch Mist!

    jop

    mfg, chris

  2. Hallo,
    solche Sachen treten schon immer beim IE in aller Regelmäßigkeit auf.
    Vielleicht hilft dir folgende Abfrage: if(document.readyState == 'complete') in einer TimeOut-Warteschleife, manchmal funzt es.

    Grüße
    Thomas

  3. Hi,

    c) Hin und wieder bekomme ich eine Fehlermeldung
    "Objekt erwartet"! Grund: Das document.forms -
    Array ist noch gar nicht bekannt! Obwohl doch die
    Seite komplett geladen ist und erst dann die
    Funktion ausgeführt wird.

    werden Deine Seiten vielleicht in komprimierter Form
    ausgeliefert?

    (http://www.schroepl.net/projekte/mod_gzip/browser.htm#Microsoft)

    Viele Grüße
    <img src="http://www.schroepl.net/projekte/gzip_cnc/gzip_cnc.gif" border=0 alt=""> Michael