Der Unterschied zwischen window.parent und window.opener JavaScript ruft die Hauptfenstermethode auf
1: window.parent ist ein Beispiel für die Iframe-Seite, die das übergeordnete Seitenobjekt aufruft:
a.html
HTML-Code<html>
<head><title>Übergeordnete Seite</title></head>
<Körper>
<form name="form1" id="form1">
<input type="text" name="username" id="username"/>
</form>
<iframe src="b.html" width=100%></iframe>
</body>
</html>
Wenn wir dem Benutzernamen-Textfeld in a.htm in b.htm einen Wert zuweisen müssen, befindet sich die Upload-Funktionsseite wie bei vielen anderen Upload-Funktionen in Ifrmae. Nachdem der Upload erfolgreich war, geben wir den hochgeladenen Pfad in das Textfeld ein Der
HTML-Code
sollte in b.html geschrieben werden
<script type="text/javascript">
var _parentWin = window.parent;
_parentWin.form1.username.value = "xxxx" ;
</script>
Instanzadresse: http://www.cnspry.cn/blog/attachments/window.parent example/a.html
Quellcode:
1.a.html
HTML-Code
<html>
<Kopf>
<title>Hauptseite</title>
<Skript>
/** Testvariablen hinzugefügt, um das untergeordnete IFrame-Fenster zu testen, das die globalen Variablen des übergeordneten Fensters aufruft*/
var parentVairous = „Eine Testvariable hinzugefügt, um das untergeordnete IFrame-Fenster zu testen und die globale Variable des übergeordneten Fensters aufzurufen“;
Funktion parentInvokeIFrame()
{
var iframeTest = document.frames["iframeTest"]; //Using document.getElementById("iframeTest");
Alert(iframeTest.document.body.innerHTML);
alarm(iframeTest.iFrameVair);
}
</script>
</head>
<Körper>
<form name="form1" id="form1">
<input type="text" name="username" id="username"/>
<input type = "button" value = "Das übergeordnete Fenster ruft den Inhalt im untergeordneten IFrame-Fenster auf" onclick = 'parentInvokeIFrame()'/>
</form>
<iframe src="b.html" width = '100%' id = 'iframeTest'></iframe>
</body>
</html>
1.b.html
HTML-Code
<html>
<Kopf>
<title></title>
<script type="text/javascript">
/** Die globale Funktion des untergeordneten Fensters wurde hinzugefügt, um das übergeordnete Formular zu testen und die globale Funktion des untergeordneten IFrame-Formulars aufzurufen*/
var iFrameVair = „Testen Sie das übergeordnete Formular, um die globale Funktion des untergeordneten IFrame-Formulars aufzurufen“;
functionUpdateParent()
{
var _parentWin = window.parent;
_parentWin.form1.username.value = "xxxx" ;
}
Funktion childInvokeParent()
{
var parentVairous = window.parent.window.parentVairous;
alarm(parentVairous);
}
</script>
</head>
<Körper>
<form name="form1" id="form1">
<p> </p>
<p align="center">
<Eingabetyp = „Schaltfläche“
Name = „Schaltfläche“
id = "Schaltfläche"
value = „Benutzernameninhalt der Hauptseite aktualisieren“
onclick = "UpdateParent()">
<Eingabetyp = „Schaltfläche“
name = "button2"
id = "button2"
value = „Testen Sie das untergeordnete IFrame-Fenster, um die globale Variable des übergeordneten Fensters aufzurufen.“
onclick = "childInvokeParent();"/>
</p>
<p> </p>
</form>
</body>
</html>
ps: Es kann nicht domänenübergreifend abgerufen werden. Wenn die Quelle des Iframes beispielsweise „http://www.xxx.ccc/“ lautet, kann sie nicht abgerufen werden.
2: window.opener ist die von window.open geöffnete untergeordnete Seite, die die Objektinstanzadresse der übergeordneten Seite aufruft: http://www.cnspry.cn/blog/attachments/window.opener instance/a.html
Quellcode:
2.a.html
HTML-Code
<html>
<Kopf>
<title>Hauptseite</title>
<script type="text/javascript">
/** Testvariablen hinzugefügt, um das untergeordnete IFrame-Fenster zu testen, das die globalen Variablen des übergeordneten Fensters aufruft*/
var parentVairous = „Eine Testvariable hinzugefügt, um das untergeordnete IFrame-Fenster zu testen und die globale Variable des übergeordneten Fensters aufzurufen“;
/**
* Da es sich von IFrame unterscheidet (IFrame hat eine ID, window.open() hat andere Modi als das übergeordnete-untergeordnete Fenster von IFrame),
* Wenn also ein neues Fenster über die Methode window.open() geöffnet wird, muss ein Objekt des neuen Fensters vorhanden sein
* Natürlich muss das Unterfenster zuerst angezeigt werden, bevor die Variablen im Unterfenster aufgerufen werden können, andernfalls wird eine Ausnahme ausgelöst
*/
varOpenWindow;
Funktion openSubWin()
{
OpenWindow = window.open('b.html', 'newwindow', 'height=1024, width=1300, top=0, left=0, toolbar=no, menubar=yes, scrollbars=yes,resizable=yes,location =nein, status=nein');
}
Funktion parentInvokeChild()
{
if(OpenWindow)//Natürlich muss zuerst das Unterfenster erscheinen, bevor die Variablen im Unterfenster aufgerufen werden können, sonst wird eine Ausnahme ausgelöst
{
alarm(OpenWindow.iFrameVair);
}
}
</script>
</head>
<Körper>
<form name="form1" id="form1">
<input type="text" name="username" id="username"/>
<input type="button" value="Popup-Unterseite" onclick = "openSubWin()">
<input type="button" value="Aufruf globaler Variablen im Popup-Fenster testen" onclick = "parentInvokeChild()">
</form>
</body>
</html>
2.b.html
HTML-Code
<html>
<Kopf>
<title>Unterseite</title>
<script type="text/javascript">
/** Die globale Funktion des untergeordneten Fensters wurde hinzugefügt, um das übergeordnete Formular zu testen und die globale Funktion des untergeordneten IFrame-Formulars aufzurufen*/
var iFrameVair = „Testen Sie das übergeordnete Formular, um die globale Funktion des untergeordneten IFrame-Formulars aufzurufen“;
functionUpdateParent()
{
var _parentWin = window.opener;
_parentWin.form1.username.value = "xxxx" ;
}
Funktion childInvokeParent()
{
var parentVairous = window.opener.window.parentVairous;
alarm(parentVairous);
}
</script>
</head>
<Körper>
<form name="form1" id="form1">
<p> </p>
<p align="center">
<input type="button"
onclick = "UpdateParent();"
name="button"
id="button"
value="Aktualisieren Sie den Benutzernameninhalt der Hauptseite">
<Eingabetyp = „Schaltfläche“
name = "button2"
id = "button2"
value = „Testen Sie das untergeordnete IFrame-Fenster, um die globale Variable des übergeordneten Fensters aufzurufen.“
onclick = "childInvokeParent();"/>
</p>
<p> </p>
</form>
</body>
Nachdem ich von hanjs daran erinnert wurde, ist es wirklich wichtig zu beachten, dass das untergeordnete Fenster des modalen Fensters keinen Inhalt auf der Seite des übergeordneten Fensters ändern kann.
Ändern Sie beispielsweise: OpenWindow = window.open('b.html', 'newwindow', 'height=1024, width=1300, top=0, left=0, toolbar=no, menubar=yes, scrollbars=yes, resizable=yes,location=no, status=no');
Für: OpenWindow = window.showModalDialog("b.html",'newwindow',"dialogHeight:100px,center:yes,resizable:no,status:no");
Wenn Sie den Inhalt im übergeordneten Fenster im untergeordneten Fenster ändern möchten, wird eine Fehlermeldung angezeigt, dass „XX“ leer oder kein Objekt ist und „XX“ hier der Inhalt im übergeordneten Fenster ist, den Sie ändern möchten.