Cookies und Frames
Hans Delfs
- javascript
1 Cheatah0 Sven Rautenberg0 molily
Ich habe ein Problem mit Javascripts in einem Frame-Design. Ich habe das Problem sehr vereinfacht in zwei Dateien:
Erste Datei: x.htm:
<HTML>
<HEAD><SCRIPT language="javascript">
<!--
var x = 'A';
function modify()
{
x = x + 'B';
alert(x);
}
//-->
</SCRIPT></HEAD>
<!-- <FRAMESET COLS="50%,50%">
<FRAME SRC="y.htm" NAME="Links">
<FRAME SRC="z.htm" NAME="Rechts">
</FRAMESET> -->
<BODY onLoad="modify()"></Body>
</HTML>
Dabei ist zu beachten, daß das ganze Frameset in Kommentarzeichen steht, also nicht wirksam ist.
Wird die Datei geladen, dann kommt die Alertbox wie vorgesehen mit "AB". Die onload-Funktion arbeitet also richtig.
Jetzt entfernt man die Kommentarzeichen um das Frameset und lädt in die beiden Frames als z.htm eine leere Dummydatei und als y.htm die Datei:
<HTML>
<HEAD><SCRIPT language="javascript">
<!--
function readx()
{
alert(parent.x);
}
//-->
</SCRIPT></HEAD>
<BODY onUnload="readx()"></BODY>
</HTML>
Lädt man jetzt x.htm, so erscheint keine Meldung. Beim Aktualisieren (unload) holt sich die Frame-Datei y.htm den Wert von x aus der parent-Datei und meldet ihn mit "A". Demnach ist in der parent-Datei beim Laden die Funktion modify, die onload gestartet wird, nicht abgelaufen. Warum?
Hi,
Ich habe ein Problem mit Javascripts in einem Frame-Design.
kein Wunder. Frames machen _nur_ Probleme.
Demnach ist in der parent-Datei beim Laden die Funktion modify, die onload gestartet wird, nicht abgelaufen. Warum?
Weil onload nichts ausgeführt wurde, weil es kein onload gibt. Das <body>-Element darf dort übrigens gar nicht stehen; es gehört ins <noframes>-Element, welches Kind des äußersten <frameset>-Elements sein muss.
Cheatah
Moin!
Lädt man jetzt x.htm, so erscheint keine Meldung. Beim Aktualisieren (unload) holt sich die Frame-Datei y.htm den Wert von x aus der parent-Datei und meldet ihn mit "A". Demnach ist in der parent-Datei beim Laden die Funktion modify, die onload gestartet wird, nicht abgelaufen. Warum?
Weil eine HTML-Datei entweder ein <frameset> oder ein <body> enthalten kann, aber nicht beides auf einmal. Wenn <frameset> enthalten ist, ist <body> verboten - jedenfalls dort, wo du es hingeschrieben hast. Erlaubt ist es nur in <noframes>-Bereichen - das wird dir aber nicht helfen, da Frames ja gerade funktionieren sollen.
Du mußt also das onload-Event deines Framesets anders definieren - per Javascript.
- Sven Rautenberg
Hallo,
Du mußt also das onload-Event deines Framesets anders definieren - per Javascript.
Das frameset-Element kann doch ein onload-Attribut haben?
Ich weiß nicht, ob das wie gewünscht funktioniert, aber wieso sollte es nicht, wenn doch zumindest das HTML-Attribut existiert?
Davon abgesehen hat das Registrieren des Handlers über JavaScript natürlich noch andere Vorteile.
Mathias