Horst Nogajski: IE 5 + 6 versteht Objektdefinition nicht. Andere Browser wohl!

Hallo zusammen,

ich habe ein Problem mit dem IE und einem JS-Objekt.
Am besten kann man sich das unter folgendem Link anschauen:
http://www.nogajski.de/test/ie_test_seite1.html

Dort sind insgesamt 4 Dateien abgelegt.
Auf den ersten beiden Seiten wird anhand von einer Funktion die innere Fensterbreite abgefragt. Das funktioniert wunderbar mit allen Browsern die ich hier habe (NN4 NN6 Opera6 Mozilla IE5 IE6),
auch mit unterschiedlichen DocTypes.

Ich habe dann auf Seite 3 und 4 aus der Funktion ein Objekt gemacht, damit ich dort nicht nur die innere Breite sondern auch gleich die aeussere Breite, innere und aeussere Hoehe abfragen kann. (Damit man nicht 'zig Funktionen braucht.

Alle Browser verstehen das auch, nur der IE5 und auch der IE6 nicht.

Ich versteh's nicht. Kann mir jemand helfen?

Die Funktionen/Objekte sind in der jeweiligen Datei im Body  uebersichtlich dargestellt, deshalb schreib ich's hier nicht noch mal rein.
Funktion: http://www.nogajski.de/test/ie_test_seite1.html
Objekt: http://www.nogajski.de/test/ie_test_seite3.html

Vielen Dank im Voraus fuer jede Hilfe,
Horst

  1. Hallo Horst

    leider ist dein Server zur Zeit nicht erreichbar, so dass dir keine Antwort gegeben werden kann.
    Ich werde allerdings morgen noch mal nachschauen, denn eine offenbar gut vorbereitete Frage verdient es, dass man hilft.

    Viele Grüße

    Antje

    1. Hallo Antje,

      leider ist dein Server zur Zeit nicht erreichbar, so dass dir keine Antwort gegeben werden kann.
      Ich werde allerdings morgen noch mal nachschauen, denn eine offenbar gut vorbereitete Frage verdient es, dass man hilft.

      Vielen Dank für Deine Antwort.

      Der Server ist immer noch nicht erreichbar, deshalb habe ich die Dateien hierhin kopiert:
      ANDERER SERVER - NEUER LINK:
      Funktionen: [http://www.t-online.de/home/hn273/ie_test_seite1.html]
      Objekte: [http://www.t-online.de/home/hn273/ie_test_seite3.html]

      Ich hoffe, das mir jetzt doch noch geholfen werden kann ;)

      Viele Grüße,
      Horst

    2. UUUPS, Jetzt hatte ich vor lauter Aufregung die link: zu den Links vergessen, das geht so nicht :)
      Also noch mal:

      Hallo Antje,

      leider ist dein Server zur Zeit nicht erreichbar, so dass dir keine Antwort gegeben werden kann.

      Ich werde allerdings morgen noch mal nachschauen, denn eine offenbar gut vorbereitete Frage verdient es, dass man hilft.

      Vielen Dank für Deine Antwort.

      Der Server ist immer noch nicht erreichbar, deshalb habe ich die Dateien hierhin kopiert:
      ANDERER SERVER - GANZ NEUE LINKS :
      Funktionen: http://www.t-online.de/home/hn273/ie_test_seite1.html
      Objekte: http://www.t-online.de/home/hn273/ie_test_seite3.html

      Ich hoffe, das mir jetzt doch noch geholfen werden kann ;)

      Viele Grüße,
      Horst

      1. Hallo Horst

        ANDERER SERVER - GANZ NEUE LINKS :
        Funktionen: http://www.t-online.de/home/hn273/ie_test_seite1.html
        Objekte: http://www.t-online.de/home/hn273/ie_test_seite3.html

        Zu allererst mein Kompliment für dieses so gut vorbereitete Posting. Die Fehlerursache war dadurch ganz rasch gefunden.
        Im IE6 habe ich es nicht getestet, aber ich denke die Ursache ist hier die gleiche.

        Die Ursache ist ein Timingproblem.

        In deiner Funktionsvariante, rufst du die Funktion erst auf, wenn der Body bereits geladen ist. Damit ist das Objekt document.body vorhanden.

        In deiner Objektvariante bildest du das Objekt bereits während des Ladevorganges. Zu diesem Zeitpunkt existiert das Objekt document.body noch nicht, was zu einem JavaScriptfehler führt. Achte mal beim Laden der Seite auf die Fehlermeldung.

        Die Folge ist, dass auf win1 und win2 dein Objekt nicht gespeichert ist. Du versuchst nun diese Objekteigenschaften abzufragen, was zu einem weiteren Fehler führt.

        Abhilfe: Bilde dein Objekt erst, wenn die Seite geladen bzw. wenn der body-Tag geschrieben ist.
        Dann klappst auch im IE.

        Viele Grüße

        Antje

        1. Hallo Antje,

          vielen Dank!

          In deiner Objektvariante bildest du das Objekt bereits während des Ladevorganges. Zu diesem Zeitpunkt existiert das Objekt document.body noch nicht, was zu einem JavaScriptfehler führt. Achte mal beim Laden der Seite auf die Fehlermeldung.

          Ich hab's jetzt gesehen, der IE beschwert sich schon beim laden, das er das Objekt BODY nicht kennt (er drückt es halt nicht so klar aus wie Du ;) , aber er meint wohl das Selbe.)

          Abhilfe: Bilde dein Objekt erst, wenn die Seite geladen bzw. wenn der body-Tag geschrieben ist.

          Ja, ich brauche die Werte schon ganz am Anfang, damit ich diese dann einem anderen Script zuführen kann, welches einen DIV-Layer (nawaswohl?, - genau!) 'zentriert' auf der Seite positioniert. Da ich bisher alles JS im HEAD stehen hatte, bzw. in einer externen Datei, habe ich jetzt kurzerhand alles in den BodyTag geschrieben. Und siehe da, jetzt läuft es auch im IE.

          Es gibt doch hoffentlich nichts, was dagegen spricht, einen haufen JS-Code in den Body-Tag zu schreiben anstatt in den HEAD-Tag ??
          Wenn der einzige Grund ist, das das schlechter Stil ist, kann ich gut damit leben ;)

          Viele Grüße,
          Horst

          PS:

          Zu allererst mein Kompliment für dieses so gut vorbereitete Posting. Die Fehlerursache war dadurch ganz rasch gefunden.

          Hierzu muß ich gestehen, das ich die Dateien nicht ausschließlich für das Posting geschrieben habe, sondern auch mit dem Hintergedanken sie zu behalten, um damit ab jetzt immer verschiedene Browser testen zu können, bzw. Den Grundaufbau bei späteren Versuchen normal zu verwenden.