Was sind in JavaScript? window.opener
, window.parent
Und window.top
und wann kann ich sie verwenden?
Was sind window.opener / window.parent / window.top?
Sriram
window.opener
bezieht sich auf das aufgerufene Fensterwindow.open( ... )
um das Fenster zu öffnen, von dem aus es aufgerufen wirdwindow.parent
bezieht sich auf das übergeordnete Element eines Fensters in a<frame>
oder<iframe>
window.top
bezieht sich auf das oberste Fenster eines Fensters, das in einer oder mehreren Ebenen verschachtelt ist<iframe>
Unterfenster
Das wird sein null
(oder vielleicht undefined
), wenn sie für die Situation des verweisenden Fensters nicht relevant sind. („Verweisendes Fenster“ bezeichnet das Fenster, in dessen Kontext der JavaScript-Code ausgeführt wird.)
-
Danke @pointy für die Antwort. Ich habe eine Hauptseite, die ein Kind mit öffnet
window.open()
beim Absenden der Seite. Nun öffnet dieses untergeordnete Fenster ein weiteres untergeordnetes Fenster mit demselbenwindow.open()
sich selbst schließen. Wenn ich jetzt mein zweites Kind einreiche (das erste Kind existiert nicht mehr), möchte ich auf die Seitenelemente meiner Hauptseite zugreifen. Ist das ab dem zweiten Kind möglich, wenn das erste nicht mehr da ist?– Sriram
3. Juli 2012 um 14:40 Uhr
-
@Sriram: Das ist die Art von Informationen, die Sie in Ihre Frage einfügen müssen, damit die Leute wissen, welches Problem Sie haben Wirklich versuche zu lösen.
– josh3736
3. Juli 2012 um 14:42
-
@Sriram, du musst greifen
window.opener.opener
bevor die Zwischenseite verschwindet.– Spitze
3. Juli 2012 um 15:00 Uhr
Markieren Sie an Ramp51
Grundlegende Informationen zu diesen Dingen finden Sie auf MDN:
window.opener
Ich habe verwendet window.opener
Meistens beim Öffnen eines neuen Fensters, das als Dialog fungierte, der Benutzereingaben erforderte und Informationen an das Hauptfenster zurückgeben musste. Dies ist jedoch durch die Ursprungsrichtlinie eingeschränkt. Sie müssen daher sicherstellen, dass sowohl der Inhalt des Dialogfelds als auch des Öffnungsfensters vom selben Ursprung geladen werden.
window.parent
Ich habe dies hauptsächlich bei der Arbeit mit verwendet <iframe>
S die mit dem Fensterobjekt kommunizieren müssen, das sie enthält.
window.top
Dies ist nützlich, um sicherzustellen, dass Sie mit dem Browserfenster der obersten Ebene interagieren. Sie können es unter anderem verwenden, um zu verhindern, dass eine andere Website Ihre Website in ein Iframe umwandelt.
Es gibt verschiedene Möglichkeiten, wie Sie mit Ihrer Situation umgehen können.
Sie haben folgende Struktur:
- Hauptfenster
- Dialog 1
- Dialog 2 wird von Dialog 1 geöffnet
Wenn Dialog 1 den Code zum Öffnen von Dialog 2 ausführt, muss Dialog 1 nach dem Erstellen von Dialog 2 eine Eigenschaft für Dialog 2 festlegen, die auf den Dialog1-Öffner verweist.
Wenn also „childwindow“ Ihre Variable für das Fensterobjekt „Dialog 2“ ist und „window“ die Variable für das Fensterobjekt „Dialog 1“ ist. Nehmen Sie nach dem Öffnen von Dialog 2, aber vor dem Schließen von Dialog 1 eine Zuweisung ähnlich dieser vor:
childwindow.appMainWindow = window.opener
Nachdem Sie die obige Zuweisung vorgenommen haben, schließen Sie Dialog 1. Anschließend sollten Sie den in Dialog2 ausgeführten Code verwenden können
window.appMainWindow
um auf das Hauptfenster zu verweisen window
Objekt.
-
Danke @Mark für die Antwort. Ich habe eine Hauptseite, die ein Kind mit öffnet
window.open()
beim Absenden der Seite. Nun öffnet dieses untergeordnete Fenster ein weiteres untergeordnetes Fenster mit demselbenwindow.open()
sich selbst schließen. Wenn ich jetzt mein zweites Kind einreiche (das erste Kind existiert nicht mehr), möchte ich auf die Seitenelemente meiner Hauptseite zugreifen. Ist das ab dem zweiten Kind möglich, wenn das erste nicht mehr da ist?– Sriram
3. Juli 2012 um 14:41
top, parent, opener (sowie window, self und iframe) sind alles Fensterobjekte.
window.opener
-> gibt das Fenster zurück, das das aktuelle Popup-Fenster öffnet oder startet.window.top
-> gibt das oberste Fenster zurück. Wenn Sie Frames verwenden, ist dies das Frameset-Fenster. Wenn Sie keine Frames verwenden, ist dies dasselbe wie „Fenster“ oder „Selbst“.window.parent
-> gibt den übergeordneten Frame des aktuellen Frames oder Iframes zurück. Der übergeordnete Frame kann das Frameset-Fenster oder ein anderer Frame sein, wenn Sie verschachtelte Frames haben. Wenn keine Frames verwendet werden, ist das übergeordnete Element dasselbe wie das aktuelle Fenster oder das aktuelle Selbst
Wenn Sie mit Popups arbeiten, spielt window.opener eine wichtige Rolle, da wir sowohl mit Feldern der übergeordneten als auch der untergeordneten Seite umgehen müssen. Wenn wir Werte auf der übergeordneten Seite verwenden müssen, können wir window.opener verwenden oder wir möchten einige Daten Im untergeordneten Fenster oder Popup-Fenster zum Zeitpunkt des Ladens können wir die Werte wiederum mit window.opener festlegen
Es gibt auch eine window.self, die auf dasselbe Fenster verweist 🙂
– abhimanyuaryan
18. April 2015 um 5:22