Netscape 4.7: Funktion im Layer
Andreas
- javascript
0 Sven Rautenberg0 Andreas
0 MichelM0 oops
Hi Leute!
Ich habe einen Layer definiert, der eine Funktion beinhaltet. Diese Funktion wird ausserhalb des Layers aufgerufen.
Zwar funktioniert die Sache im IE, aber Netscape 4.7 sagt mir immer wieder, dass er diese Funktion nicht finden kann.
Woran kann, dass liegen?
Vielen Dank schonmal im vorraus!
Moin!
Ich habe einen Layer definiert, der eine Funktion beinhaltet. Diese Funktion wird ausserhalb des Layers aufgerufen.
Zwar funktioniert die Sache im IE, aber Netscape 4.7 sagt mir immer wieder, dass er diese Funktion nicht finden kann.
Woran kann, dass liegen?
Warum definierst du die Funktion im Layer? Macht ja scheinbar Probleme, außerdem gehören Funktionen in den <head>, damit sie bereits vollständig definiert sind, sobald irgendwas sichtbares des <body>angezeigt wird.
- Sven Rautenberg
Warum definierst du die Funktion im Layer? Macht ja scheinbar Probleme, außerdem gehören Funktionen in den <head>, damit sie bereits vollständig definiert sind, sobald irgendwas sichtbares des <body>angezeigt wird.
Muss leider so sein, da die Funktion durch onload im Body geladen werden soll!
Unter IE funktioniert der Spass auch, nur Netscape macht da nicht mit.
Warum definierst du die Funktion im Layer? Macht ja scheinbar Probleme, außerdem gehören Funktionen in den <head>, damit sie bereits vollständig definiert sind, sobald irgendwas sichtbares des <body>angezeigt wird.
Muss leider so sein, da die Funktion durch onload im Body geladen werden soll!
Wieso das denn? Du kannst Funktionen definieren, wo du willst. Wenn sie ohnehin erst durch onload aufgerufen wird, dann kann sie genausogut im Head stehen.
Lediglich Scripte, die aktiv beim Seitenladen direkt Code an eine bestimmte Stelle schreiben, müssen an ihrer festen Position stehenbleiben. Das sind aber niemals Funktionen.
- Sven Rautenberg
Wieso das denn? Du kannst Funktionen definieren, wo du willst. Wenn sie ohnehin erst durch onload aufgerufen wird, dann kann sie genausogut im Head stehen.
Lediglich Scripte, die aktiv beim Seitenladen direkt Code an eine bestimmte Stelle schreiben, müssen an ihrer festen Position stehenbleiben. Das sind aber niemals Funktionen.
Okay bin überzeugt, aber gibt es nicht doch ne Möglichkeit die Funktion im Layer anzusprechen ohne die Funktion in den Header zu packen :-)!
Yo!
Lediglich Scripte, die aktiv beim Seitenladen direkt Code an eine bestimmte Stelle schreiben, müssen an ihrer festen Position stehenbleiben. Das sind aber niemals Funktionen.
Okay bin überzeugt, aber gibt es nicht doch ne Möglichkeit die Funktion im Layer anzusprechen ohne die Funktion in den Header zu packen :-)!
Alles, was im Layer steckt, ist für Netscape 4 in einem verschachtelten Dokument. Bilder sind allgemein mit document.images, in NS4 aber mit document.layers.document.images (oder noch tiefer verschachtelt) aufzurufen.
Vermutung: Vielleicht gibts die Möglichkeit, über document.layers.funktion() den Aufruf zu starten. Ist aber natürlich doppelt umständlich, weil normale Browser nur funktion() als Aufruf brauchen. Du müßtest also jeden Funktionsaufruf kapseln in
if (document.layers) {document.layers[layer].funktion()} else {funktion()}
Es ist einfach wesentlich einfacher, sich diese Bürde nicht auch aufzuhalsen, sondern schlicht _keine_Scripte_in_Layer_ zu packen. Es gibt dafür keinen rationalen Grund, es zu tun.
- Sven Rautenberg
Hi Leute!
Ich habe einen Layer definiert, der eine Funktion beinhaltet. Diese Funktion wird ausserhalb des Layers aufgerufen.
Zwar funktioniert die Sache im IE, aber Netscape 4.7 sagt mir immer wieder, dass er diese Funktion nicht finden kann.
Woran kann, dass liegen?
Vielen Dank schonmal im vorraus!
Hi,
das kann daran liegen, das im Layer der Name (case-sensitiv) fehlt, oder die Funktion vor onload aufgerufen wurde.
<body onload="funktion()">
<Layer name="einLayer"><Layer name="einzweitesLayer"</layer>
document.einLayer.document.einzweitesLayer.etwas
document.layer[0].document.layer[0].etwas
dasselber gilt für DIV und SPAN, für neue Browser braucht es ID= und name=
Ansonsten könnte der komplette Code hier gepostet aufschlussreicher sein.
bis später ?
Michael
Hi,
das kann daran liegen, das im Layer der Name (case-sensitiv) fehlt, oder die Funktion vor onload aufgerufen wurde.
<body onload="funktion()">
<Layer name="einLayer"><Layer name="einzweitesLayer"</layer>
document.einLayer.document.einzweitesLayer.etwas
Oops, sorry:
document.layers[0].document.layers[0].etwas
dasselber gilt für DIV und SPAN, für neue Browser braucht es ID= und name=
Ansonsten könnte der komplette Code hier gepostet aufschlussreicher sein.
bis später ?
Michael