div-layer, mehrere Layer innerhalb einer function beladen
brand
- javascript
0 Harald Legler0 brand
Hallo!
ich simuliere mit absolut positionierten DIVs iframes. Wenn nun auf einen Link geclickt wird, so werden in mehrere Layer Dateien geladen.
der Netscape lädt nun nur die erste Datei und scheint dann "hängenzubleiben". (führt nach dem ersten load-Befehl keine weiteren Befehle mehr aus) Er gibt keine Fehlermeldung aus, stürzt nicht ab, lediglich der Mauszeiger bleibt eine Sanduhr, solange man ihn nicht aus dem Link herausbewegt.
Source:
funktion linko('wo') {
document.anzeigei.load("gruss.html",400);
with(document.uberi.document) {
open();
write(wo);
close();
}
document.listei.load("list.html",160);
}
gruss.html bzw. list.html sind fast leere Dateien (nur eine Zeile Text, kein Javascript oder CSS drin)
divs:
<div id="anzeigei" style="position:absolute; top:130px; left:40px; width:400px; height:310px; z-index:5;"> </div><br>
<div id="listei" style="position:absolute; top:170px; left:570px; width:160px; height:270px; z-index:7;"> </div><br>
<div id="uberi" style="position:absolute; top:95px; left:40px; z-index:8;"> </div><br>
der Funktionsaufruf:
<div id="rezepti"><a href="javascript:linko('rezept')" onMouseover="drauf('rezept')" onMouseout="raus('rezept')"><img src="pic/but_rezept.gif" name="rezeptb" width=79 height=57 alt="" border="0"></a></div>
ist jemandem dieses Problem schon mal begegnet bzw. weiß jemand den Grund für das "hängenbleiben" und/oder eine Lösung?
Kann es ein zeitliches Problem sein, daß das laden so lange dauert oder der Netscape vor Freude über die geladene Datei vergißt, daß er eigentlich das Script weiter abarbeiten soll.
mfG
BRAND
Hallo,
wenn du bei der Übergabe an die function <a href="javascript:linko('rezept')"... schreibst, solltest du bei der function selbst das folgendermaßen schreiben:
funktion linko(wo) {
Also in der Funktion ohne Anführungszeichen.
Der Rest müsste stimmen.
Viele Grüße
Harald
Hi!
funktion linko(wo) {
sorry, das war leider nur ein Tippfehler beim posten(in der Datei habe ich keine ')
trotzdem Danke!
mfG
BRAND
Hi brand,
wenn man in einen Layer etwas reinschreibt, muß man das glaube ich so machen:
document.layername.document.clear();
document.layername.document.write("text");
document.layername.document.close();
mit open() klappt das nur, wenn der Code gleich beim Aufbau des Dokuments ausgegeben wird;
<BODY>
<SCRIPT>
document.open();
document.write("text");
document.close();
</SCRIPT>
</BODY>
Tschüs
Daniel
Hi!
Leider ist's das auch nicht. (es funktioniert nämlich auch nicht, wenn ich das "in den Layer schreiben" weglasse und nur einfach in zwei Layer laden will)
Aber ich habe einen Workaround. Ich lade nur eine Seite in einen Layer - wenn diese Seite geladen ist, wird mit onLoad der nächste Layer beladen.
mfG,
BRAND
Hi Daniel!
wenn man in einen Layer etwas reinschreibt, muß man das glaube ich so machen:
document.layername.document.clear();
document.layername.document.write("text");
document.layername.document.close();
Dieses clear() habe ich nun auch schon ein paar mal gesehen. Ich kann es aber nirgendwo dokumentiert
finden. Trotzdem gibt es diese Funktion aber, sonst wuerde der Aufruf ja eine Fehlermeldung bringen, was
bei meinem Netscape 4.7 aber nicht passiert. Vermutlich ist es ein Erbe aus laengst vergangenen Zeiten,
denn in http://developer.netscape.com/docs/manuals/js/client/jsref/document.htm#1196317 steht:
"In JavaScript 1.1 and later, document.open or document.open("text/html") clears the current document if
it has finished loading." Was war dann also in JS1.0?
mit open() klappt das nur, wenn der Code gleich beim Aufbau des Dokuments ausgegeben wird;
Nein, waehrend ein Dokument laedt, ist es quasi schon offen. Da braucht also nicht geoeffnet und
geschlossen werden, nur einfach schreiben. Vielleicht ist es sogar voellig faksch und produziert schon
mal den ein oder anderen Absturz. Einen bestehendes Dokument (das fertig geladen ist), bereitet man
mit open() auf den Schreibvorgang vor (siehe auch obigen Link).
So long