Hans Delfs: Cookies und Frames

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?

  1. 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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. 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

    --
    My sssignature, my preciousssss!
    1. 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