Ich habe ein Popup-Fenster von window.open in JavaScript geöffnet. Ich möchte die übergeordnete Seite aktualisieren, wenn ich dieses Popup-Fenster schließe. (Onclose-Ereignis?) Wie kann ich das tun?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Sie können über ' window.opener ' auf das übergeordnete Fenster zugreifen. Schreiben Sie also Folgendes in das untergeordnete Fenster:
<script>
window.onunload = refreshParent;
function refreshParent() {
window.opener.location.reload();
}
</script>
Das Popup-Fenster hat kein nahes Ereignis, das Sie hören können.
Andererseits gibt es eine geschlossene Eigenschaft, die auf true gesetzt wird, wenn das Fenster geschlossen wird.
Sie können einen Timer einstellen, um die geschlossene Eigenschaft zu überprüfen und folgendermaßen zu tun:
var win = window.open('foo.html', 'windowName',"width=200,height=200,scrollbars=no");
var timer = setInterval(function() {
if(win.closed) {
clearInterval(timer);
alert('closed');
}
}, 1000);
Siehe dieses Fiddle Beispiel !
fügen Sie auf Ihrer Kinderseite diese ein:
<script type="text/javascript">
function refreshAndClose() {
window.opener.location.reload(true);
window.close();
}
</script>
und
<body onbeforeunload="refreshAndClose();">
für ein gutes Design der Benutzeroberfläche sollten Sie jedoch ein Close button
verwenden, da es benutzerfreundlicher ist. siehe Code unten.
<script type="text/javascript">
$(document).ready(function () {
$('#btn').click(function () {
window.opener.location.reload(true);
window.close();
});
});
</script>
<input type='button' id='btn' value='Close' />
window.open gibt einen Verweis auf das neu erstellte Fenster zurück, sofern die geöffnete URL der Same Origin Policy entspricht.
Das sollte funktionieren:
function windowClose() {
window.location.reload();
}
var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;
Ich benutze das:
<script language='javascript'>
var t;
function doLoad() {
t = setTimeout("window.close()",1000);
}
</script>
<script type="text/javascript">
function refreshAndClose() {
window.opener.location.reload(true);
window.close();
}
</script>
<body onbeforeunload="refreshAndClose();" onLoad='doLoad()''>
wenn das Fenster geschlossen wird, wird das übergeordnete Fenster aktualisiert.
Wenn Ihre App in einem HTML5-fähigen Browser ausgeführt wird. Sie können postMessage verwenden. Das dort gegebene Beispiel ist Ihrem sehr ähnlich.
Versuche dies
self.opener.location.reload();
Öffnen Sie das übergeordnete Fenster eines aktuellen Fensters und laden Sie den Speicherort erneut.
In meinem Fall öffnete ich ein Popup-Fenster, wenn Sie auf die Link-Schaltfläche in der übergeordneten Seite klicken
window.opener.location.reload();
in untergeordnetem Fenster verursacht erneutes Öffnen des untergeordneten Fensters (möglicherweise aufgrund von "View State", denke ich. Korrigieren Sie mich, wenn ich falsch liege) ... Also entschied ich mich, die Seite nicht in "parent" zu laden und die Seite erneut zu laden, indem Sie ihr die gleiche URL zuweisen .
Um das Öffnen des Popup-Fensters nach dem Schließen des Popup-Fensters zu vermeiden, kann dies hilfreich sein.
window.onunload = function(){
window.opener.location = window.opener.location;};
Sie können den folgenden Code auf der übergeordneten Seite verwenden.
<script>
window.onunload = refreshParent;
function refreshParent() {
window.opener.location.reload();
}
</script>
Sie erreichen die Hauptseite mit dem übergeordneten Befehl (übergeordnetes Fenster) nach dem Schritt können Sie alles machen ...
function funcx() {
var result = confirm('bla bla bla.!');
if(result)
//parent.location.assign("http://localhost:58250/Ekocc/" + document.getElementById('hdnLink').value + "");
parent.location.assign("http://blabla.com/" + document.getElementById('hdnLink').value + "");
}
Mit folgendem Code kann das übergeordnete Fenster nach dem Schließen aktualisiert werden:
function ManageQB_PopUp() {
$(document).ready(function () {
window.close();
});
window.onunload = function () {
var win = window.opener;
if (!win.closed) {
window.opener.location.reload();
}
};
}