Javascriptdatei.js -> Fehler im MSIE4

Hallo,

ich habe ein kleines Problem mit einem HTML-File, in das ich Teile des JavaScript-Codes sud einer externen Datei einbinde. Meim MSIE4 kommt beim allerersten Aufruf der Seite (nach dem Booten) die Fehlermeldung: „Objekt erwartet“, und zwar dort wo ich eine eingebundene Routine per onLoad aufrufe. Bei späteren Aufrufen klappts dann immer.

Ich habe den Verdacht, dass MSIE4 onLoad auslöst, noch bevor die externe Datei fertig geladen ist. Gibts da nen Trick, den ich beachten muss ?

So binde ich die exterme Datei ein:

viele Grüße Ralf

Hallo,

definitiv NEIN !!!

Da Du Dein Script irgendwo oben im Header einbaust, wird es natuerlich auch zuerst geladen und dann der Body der HTML-Datei. Also immer schoen der Reihenfolge nach, wie es sich auch gehoert. In Deinem Script wird irgendwo schon auf etwas zugeriffen, was erst spaeter im Body deklariert wird. Also irgendeine Routine, die in keiner function steht und damit auch sofort aufgerufen wird. Das muss in eine function rein, die dann entweder ueber das Script selbst per window.onload=… oder in der HTML-Datei per aufgerufen wird.

CU

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

definitiv NEIN !!!

warum so laut ?

Da Du Dein Script irgendwo oben im Header einbaust, wird es
natuerlich auch zuerst geladen und dann der Body der
HTML-Datei. Also immer schoen der Reihenfolge nach, wie es
sich auch gehoert. In Deinem Script wird irgendwo schon auf
etwas zugeriffen, was erst spaeter im Body deklariert wird.
Also irgendeine Routine, die in keiner function steht und
damit auch sofort aufgerufen wird. Das muss in eine function
rein, die dann entweder ueber das Script selbst per
window.onload=… oder in der HTML-Datei per aufgerufen wird.

CU

der onLoad-Event wird (so sollte es jedenfalls sein) erst dann ausgelöst, wenn die Datei komplett geladen ist. Also fertig geladen einschließlich aller eingebundenen „.js“-Dateien. Das bedeutet, dass es nicht an der Deklarations-Reihenfolge liegen kann, bei onLoad sind per Definition alle Routinen vorhanden.

Wie es aussieht habe ich hier aber irgendwie eine Situation zusammenprogrammiert, wo das „.js“-File nicht nur verspätet, sondern überhaut nicht geladen wird (ist ne Konstruktion mit drei Frames und Funktionsaufrufen untereinander).

Kennt jemand das Problem beim MSIE4, und weiss jemand eine Lösung ?

viele Grüße Ralf

Hallo nochmal,

natuerlich wird der onload-Event erst dann auch ausgefuehrt, wenn die HTML-Datei komplett geladen ist. Das ist auch im MSIE 4 nicht im geringsten anders. Das hindert den Browser aber nicht daran schon vorher Scripte auszufuehren, wie z.B. bei einem Preload-Script. Du verwechselst hier Aepfel mit Birnen. Man muss dem Browser nur gescheit sagen, was Aepfel was Birnen sind, sprich dem Browser genau sagen was er wie in welcher Reihenfolge tun soll. Die Grundreihenfolge ist die, wie die Tags in der HTML-Datei stehen, dann kommen die genialen Einfaelle des Programmieres wie etwas im Besonderen zu handhaben oder abzuarbeiten ist.

BYE

vir2allender hat vollkommen recht, es gibt dort keine besonderheiten, dass das event eher feuern wuerde.

wenn du ein komplexes frameset laedst, in dem die einzelenen frames kommunizieren, dann darfst du auf keinen fall ein

nutzen, sondern musst

nutzen.
erst dann sind sicher in allen frames alle objekte geladen.

ich habe damit eigentlich nur schlechte erfahrungen gemacht, weil so etwas recht komplex ist.

du musst deinen code checken:
-sind alle aufrufe durch ein eindeutiges event ausgeloest (in der richtigen reihenfolge und geben alle funktinaufrufe werte zurueck)
-vermeide document.write
-keine objekte/variablen zur ladezeit nutzen
-wenn a ausgefuerht, ist b dann sicher geladen?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

wenn du ein komplexes frameset laedst, in dem die einzelenen
frames kommunizieren, dann darfst du auf keinen fall ein

nutzen, sondern musst

nutzen.
erst dann sind sicher in allen frames alle objekte geladen.

danke, ich denke dass isses. Ich habe noch eine Weile experimentiert, und dann schließlich einen Workaround gefunden:
es geht um 2 Frames, wobei der eine die „.js“-Datei enthält, worin per onLoad eine Dummy-Function aufgerufen wird (was den Fehler wirft), und der andere der per onLoad ein vordefiniertes Formular abschickt, und sich so reloaded. Naja, und das bringt wohl Unordnung ins Programm. Jedenfalls klappts, wenn ich das Formular erst nach ner Sekunde per timeout abschicke.

Aber Dein Tip mit „frameset onload“ is noch besser, ich probiere das mal …

viele Grüße Ralf

PS: die Konstruktion is etwas tricky, weil es dabei um ein kleines Internet-Spiel mit JavaScript und Perl handelt.