Link aus Popup ins Elternfenster
Wie läßt sich aus einem als Popup geöffneten Fenster die Mutterseite ansprechen? – Du hast dazu drei, eigentlich vier Möglichkeiten.
Popup per Link
Schreibe die Anforderungen direkt in den Link im Popup:
<a href="javascript:void(opener.location.href='bestaetigungsseite.htm')"> LINK ZUR MUTTERSEITE</a>
Diese Version eignet sich eher, wenn Du nur einen derartigen Link anbietest.
Ausgelagerte Funktion im head
Schreibe eine Funktion in den head
der Seite,
die im Popup aufgerufen wird, und rufe mit dem Verweis diese
auf:
<script type="Text/JavaScript"> <!-- function executeLink(url) { opener.location.href=url; } //--> </script>
Und der Verweis:
<a href="javascript:void(executeLink('bestaetigungsseite2.htm'));"> LINK ZUR MUTTERSEITE</a>
Die zweite Version ist eher dann sinnvoll, wenn Du mehrere derartige Links anbietest.
Gleichzeitiges Schließen des Popups
Damit sich das Popup selbst automatisch schließt, schreibst
Du einfach self.close()
dazu:
<a href="javascript:void(opener.location.href='bestaetigungsseite3');self.close();"> LINK ZUR MUTTERSEITE</a>
Gleichzeitiges Schließen mit Funktion
Die letzte Variante entspricht einer Mischung aus der
zweiten und der dritten – das self.close()
wird
in die Funktion eingefügt:
<script type="Text/JavaScript"> <!-- function executeLink(url) { opener.location.href=url; self.close(); } //--> </script>
Und der Link dazu:
<a href="javascript:void(executeLink('bestaetigungsseite4.htm'));"> LINK ZUR MUTTERSEITE</a>
Wenn Du nicht möchtest, daß sich bei sämtlichen über diese Funktion aufgerufenen Links das Fenster selbst schließt, mußt Du diese Anweisung aus der Funktion herausnehmen und nur bei den betreffenden Links einfügen. Dann schließt sich das Fenster nur bei den Links, bei denen Du das explizit angegeben hast.
Probleme mit frames
Wenn die Mutterseite aus einem frameset
besteht, dann öffnet sich die neue Seite in demjenigen
frame, von dem aus das Popup aufgerufen
wurde (opener
). Um nun das
frameset zu „löschen“ und also
die neue Seite über das ganze Fenster anzeigen zu lassen, mußt Du
folgende Zeile abändern:
opener.location.href=url;
Stattdessen schreibst Du dieses:
opener.top.location.href=url;
Um die Seite in einem anderen frame zu öffnen als dem, aus dem das Popup geöffnet wurde, muß die Zeile so lauten:
opener.parent.Framename.location.href=url;
opener
spricht den frame an,
aus dem das Popup geöffnet wurde. parent
spricht das
Elternfenster des frames an, also das
frameset. Framename
spricht
den frame an, in dem die Seite geöffnet
werden soll. Der Name ist frei wählbar, allerdings muß auf
Groß-/Kleinschreibung geachtet werden. ACHTUNG!!!
Die frames müssen in diesem Fall alle einen
Namen haben, sonst können Sie per JavaScript nicht so einfach
angesprochen werden!
Wenn als der frame, in dem Du die Seite öffnen willst, z. B. „main“ heißt, muß die Syntax so lauten:
opener.parent.main.location.href=url;
Die Methode javascript:void()
gibt keinen Wert
zurück, folglich wird die ausführende Seite nicht verändert,
während bei Aufruf mittels javascript:anweisung
der Rückgebewert [object]
auf der aufrufenden
Seite erscheint. Wenn Du genauere Informationen über den Zugriff
auf verschachtelte Objekte haben willst, empfehle ich Dir folgende
Seite: http://selfaktuell.teamone.de/tippstricks/javascript/fensterzugriff/index.htm
Anmerkung: Ansprechen von frames per Indexnummern
Möglich ist auch ein Ansprechen der frames per Indexnummern, aber davon rate ich eher ab, da sich viele, vor allem Anfänger, hier bei der Nummerierung vertun und dann nicht mehr weiterwissen. Grundsätzlich beginnt die Nummerierung mit 0. Die Indexnummern werden in der Reihenfolge vergeben, in der die frames im frameset angeführt sind.
Viel Spaß!