Norbert Kölln: Einen Frame aus neu geöffnetem Fenter heraus aktualisieren

Moin, moin!

Ich verzweifele gerade an folgendem Problem:

In einem Frameset habe ich ein Frame mit einem Formular. Für dieses Formular habe ich action='/cgi-bin/eintrag.pl' und target='_blank' definiert. Statt eines Submit-Buttons habe ich einen, der zur Ausführung eines JavaScriptes führt. Dieses ändert etwas an den Inhalten der Formularfelder und führt dann den Befehl document.<formularname>.submit() aus. Damit öffnet sich wie gewünscht ein neues Fenster, in dem der Output des Perl-Skriptes angezeigt wird.

Nun will ich von diesem neuen Fenster aus den Inhalt eines Frames des Framesets aktualisieren lassen. Das soll ohne Eingreifen des Benutzers erfolgen. Nach ausführlicher Suche in SelfHTML inklusive Forum habe ich viele der vorgeschlagenen Varianten versucht, bin aber zu keiner Lösung gekommen.

parent.frames["<framename>"].location.reload() o. Ä. führt zur Fehlermeldung "'parent.frames.<framename>.location' ist kein Objekt", opener.parent.frames["<framename>"].location.reload() bringt den Hinweis "'opener.parent' ist kein Objekt".

Hat mal jemand einen Tip!

Mit bestem Dank im voraus,
Norbert

  1. Hi,

    In einem Frameset habe ich ein Frame mit einem Formular. Für dieses Formular habe ich action='/cgi-bin/eintrag.pl' und target='_blank' definiert.

    aus einem solchen Fenster heraus existiert keine opener-Referenz. Diese steht ausschließlich solchen Fenstern zur Verfügung, die über window.open() geöffnet wurden.

    Statt eines Submit-Buttons habe ich einen, der zur Ausführung eines JavaScriptes führt.

    Und was ist mit Usern, die kein JavaScript aktiv haben?

    Nun will ich von diesem neuen Fenster aus den Inhalt eines Frames des Framesets aktualisieren lassen.

    Das wird nicht klappen. Natürlich kannst Du ein Submit/window.open()-Konstrukt verwenden, allerdings wirst Du wahlweise Funktionslosigkeit oder ein Fenster-Flooding bei jenen Usern verursachen, die sich die Freuden von JavaScript vom Hals geschafft haben.

    Cheatah

    1. Hallo Cheatah!

      Gibt es denn eine andere Möglichkeit für mich, einen Frame in einem anderen Fenster anzusprechen, wenn die opener-Referenz nicht zur Verfügung steht?

      JavaScript verwende ich ziemlich intensiv, bin mir der Nachteile durchaus bewußt. Und User, die es deaktiviert haben, werden bereits auf der Startseite mittels noscript-Tag auf das entstehende Problem hingewiesen.

      Wenn mir sonst nichts mehr einfällt bzw. vorgeschlagen wird, werde ich wohl tatsächlich ein Submit/window.open()-Konstrukt verwenden müssen.

      Vielen Dank!
      Norbert

      1. Hi,

        Gibt es denn eine andere Möglichkeit für mich, einen Frame in einem anderen Fenster anzusprechen, wenn die opener-Referenz nicht zur Verfügung steht?

        ja: target="NameDesFrames".

        Cheatah

        1. Nochmals moin, moin!

          target="NameDesFrames" kann ich natürlich in einem <a href>-Tag verwenden. Aber ich möchte ja, daß die Aktualisierung des Frames ohne das Eingreifen des Benutzers durchgeführt wird. Also muß ich Aktion per JavaScript veranlassen. Erschwerend kommt hinzu, daß ich nicht weiß, welchen Inhalt das Zielframe zu diesem Zeitpunkt hat. Ich kann also keine Adresse angeben, sondern muß mit reload() arbeiten.

          Norbert

          1. Hi,

            Aber ich möchte ja,

            Standardfrage: Möchte das auch der Benutzer?

            daß die Aktualisierung des Frames ohne das Eingreifen des Benutzers durchgeführt wird. Also muß ich Aktion per JavaScript veranlassen.

            Was spricht gegen document.links[x].click()?

            Erschwerend kommt hinzu, daß ich nicht weiß, welchen Inhalt das Zielframe zu diesem Zeitpunkt hat.

            Naja, dann kannst Du keinesfalls davon ausgehen, dass ein Zugriff auf dessen location-Objekt nicht in einem Fehler resultiert.

            Cheatah

            1. Moin, moin, Cheatah und alle anderen!

              Ja, an dieser Stelle möchte das auch der Benutzer, denn er hat Daten zum Server geschickt und möchte das Ergebis auch zu sehen bekommen:

              Gegen document.links[x].click() spricht, daß es nicht mit Netscape funktioniert.

              Der Hinweis, ich wisse nicht, welchen Inhalt das Zielframe hat, war etwas mißverständlich. Es wird dort eine von 4 möglichen Seiten angezeigt, wobei relevant ist, um welche es sich handelt.

              Der Hinweis auf click() hat mich weitergebracht. Bei einigen Objekten ist es auch für Netscape nutzbar, wie die Lektüre von SelfHTML mir offenbarte. Und so kam ich über den Umweg "Button" zu Formularen.
              Ich definierte mir einfach ein Formular mit ausschließlich unsichtbaren Feldern, legte mein Zielfenster fest und schicke das Formular jetzt per submit() ab, also ohne Benutzeraktion und mit dem Ergebnis an der richtigen Stelle.

              Vielen Dank für Deine Erklärungen und den entscheidenden Stoß in Richtung Lösung!

              Norbert