Andreas Korthaus: Formular in anderem(verschachtelten) Frame abschicken

Hallo!

Ich habe folgendes etwas verschachtelte Frameset(bitte, kein Kommentar zu Frames ;-))

<frameset rows="*,120" cols="*">
  <frameset cols="200,*">
    <frame src="/edit_fields_types" name="typen" scrolling="no">
    <frameset rows="*,30" cols="*" border="0" framespacing="0" frameborder="0">
      <frame src="/edit_fields_data" name="eingabe" scrolling="no">
      <frame src="/edit_fields_show_preview" name="zeige_vorschau" scrolling="no">
    </frameset>
  </frameset>
  <frameset rows="*,30" cols="*" border="0" framespacing="0" frameborder="0">
    <frame src="/edit_fields_preview" name="vorschau" scrolling="no">
    <frame src="/edit_fields_submit" name="speichern" scrolling="no">
  </frameset>
</frameset>

Jetzt möchte ich per Javascript sowohl aus dem Frame "zeige_Vorschau", als auch aus "speichern" das Formular in "eingabe" absenden. OK, im IE funktioniert das ohne Probleme, im Mozilla dagagen nicht. Das Formular in "eingabe" heißt "form". Ich mache das so:

<script type="text/javascript">
<!--
function save() {
  parent.eingabe.form.action.value = "save";
  parent.eingabe.form.submit();
}
//-->
</script>

<input onclick="save();" type="button" value="speichern">

und entsprechend mit der Vorschau. Das klappt im IE prima, aber im Mozilla nicht. Aber das verstehe ich  nicht, das ist doch wirklich altes Javascript, udn soweit ich weiß kann man die framesets ineinander verschachteln wie man will, solange man eindeutige Namen für die Framesets definiert kann man die immer direkt mit parent.framename ansprechen, das Formular mit parent.framename.form (wie gesagt heißt das so) und abschicken desseben geht über parent.framename.form.submit(). Nur geht das wie gesagt nicht im Mozilla.

Kann mir jemand sagen warum?

Viele Grüße
Andreas

  1. Hallo Andreas,

    Was gibt denn der Mozilla für eine Fehlermeldung aus?
    Wenn ich dsa so schnell richtig gesehen habe, dann sollte es auch im Mozilla
    aus dem Frame zeige_vorschau, nicht aber aus dem Frame speichern funktionieren.
    Schau dir noch einmal an, welcher Frame/welches Frameset du mit parent ansprichst.
    Besser wäre, denke ich, von "top" auszugehen.

    Grüße
      David

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
    1. Hi!

      Was gibt denn der Mozilla für eine Fehlermeldung aus?

      keine - Mozilla gibt bei mir nie Fehlermeldungen aus, zum debiggen von Kavascript nehem ich immer den IE. Wobei... Aha! Wußte ich ja gar nicht, also da steht:

      Error: parent.eingabe.form has no properties
      Source File: /edit_fields_show_preview
      Line: 14

      OK. Und wieso? Wieso klappt es im IE?

      Wenn ich dsa so schnell richtig gesehen habe, dann sollte es auch im Mozilla
      aus dem Frame zeige_vorschau, nicht aber aus dem Frame speichern funktionieren.
      Schau dir noch einmal an, welcher Frame/welches Frameset du mit parent ansprichst.
      Besser wäre, denke ich, von "top" auszugehen.

      Nein, oder? Das komplette Frameset, auch wenn es mehrstufig ist, habe ich ja in einer Datei, daher sollte ich alle Frames direkt über parent.framename erreichen können, oder? Ich habe also keinen Frame der ein weiteres Frameset enthält.

      Vergleichbar  mit: http://aktuell.de.selfhtml.org/tippstricks/javascript/fensterzugriff/#beispiel, und da funktioniert das relative ansprechen auch direkt, obwohl es unterschiedliche Ebenen sind. Oder habe ich da was falsch verstanden?`

      Aber wie gesagt, der Fehler taucht in beiden Frames auf, und es ist derselbe Fehler. Es wird einfach die erste Zeile wo auf parent.eingabe.form zugegriffen wird genannt. Oder liegt es vielleicht am Namen "form", dass der vielleicht irgendwie eine andere Bedeutung hat?

      Grüße
      Andreas

      1. Hi!

        Aber wie gesagt, der Fehler taucht in beiden Frames auf, und es ist derselbe Fehler. Es wird einfach die erste Zeile wo auf parent.eingabe.form zugegriffen wird genannt.

        OK, hab den Fehler:

        parent.eingabe.form geht nicht im Mozilla, da muss es heißen:

        parent.eingabe.document.form

        geht das so eigentlich aus SELFHTML hervor? Vielleicht habe ich es ja übersehen.

        Viele Grüße
        Andreas

        1. Hallo Andreas,

          geht das so eigentlich aus SELFHTML hervor? Vielleicht habe ich es ja übersehen.

          Ich habe da gerade auch noch einmal nachgeschaut. Es steht darin, wenn man
          genau liest, denke ich.
          Zum einen steht auf
          [http://selfhtml.teamone.de/javascript/objekte/document.htm#allgemeines],
          dass du mit parent.framename.document auf das andere Dokument zugreifst.
          Aus [http://selfhtml.teamone.de/javascript/objekte/forms.htm#allgemeines] geht
          hervor, dass du Formularelemente mit document.FormName.Elementname ansprechen
          musst. Das beides zusammen würde also die Lösung zeigen.
          Daran habe ich aber auch nicht gedacht :)
          Und da es im IE funktionierte mag wohl wieder an seiner bekannten Eigenart
          liegen ;)

          Grüße
            David

          --
          >>Nobody will ever need more than 640k RAM!<<
          1981 Bill Gates