Ho aperto una finestra popup tramite window.open in JavaScript, voglio aggiornare la pagina padre quando chiudo questa finestra popup. (Evento onclose?) Come posso farlo?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Ho aperto una finestra popup tramite window.open in JavaScript, voglio aggiornare la pagina padre quando chiudo questa finestra popup. (Evento onclose?) Come posso farlo?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Risposte:
Puoi accedere alla finestra genitore usando ' window.opener ', quindi scrivi qualcosa come il seguente nella finestra figlia:
<script>
window.onunload = refreshParent;
function refreshParent() {
window.opener.location.reload();
}
</script>
popupWindow.closed
utilizzando setInterval
come nella soluzione di @ Zuul.
La finestra pop-up non ha alcun evento di chiusura che puoi ascoltare.
D'altra parte, c'è una proprietà closed che è impostata su true quando la finestra viene chiusa.
Puoi impostare un timer per controllare quella proprietà chiusa e farlo in questo modo:
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);
Guarda questo esempio di violino funzionante !
nella pagina di tuo figlio, inserisci questi:
<script type="text/javascript">
function refreshAndClose() {
window.opener.location.reload(true);
window.close();
}
</script>
e
<body onbeforeunload="refreshAndClose();">
ma come buon design dell'interfaccia utente, dovresti usare Close button
perché è più facile da usare. vedere il codice sotto.
<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' />
Io uso questo:
<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()''>
quando la finestra si chiude, aggiorna la finestra padre.
window.open restituirà un riferimento alla finestra appena creata, a condizione che l'URL aperto sia conforme alla politica della stessa origine .
Questo dovrebbe funzionare:
function windowClose() {
window.location.reload();
}
var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;
Nel mio caso ho aperto una finestra pop-up facendo clic sul pulsante di collegamento nella pagina principale. Per aggiornare il genitore alla chiusura del figlio utilizzando
window.opener.location.reload();
nella finestra figlio ha causato la riapertura della finestra figlio (potrebbe essere a causa dello stato di visualizzazione, immagino. Correggimi se sbaglio). Quindi ho deciso di non ricaricare la pagina nel genitore e caricare di nuovo la pagina assegnandole lo stesso URL.
Per evitare che il popup si riapra dopo aver chiuso la finestra pop-up, questo potrebbe aiutare,
window.onunload = function(){
window.opener.location = window.opener.location;};
Se la tua app viene eseguita su un browser abilitato per HTML5. Puoi usare postMessage . L'esempio fornito è abbastanza simile al tuo.
Puoi raggiungere la pagina principale con il comando genitore (genitore è la finestra) dopo il passaggio puoi fare tutto ...
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 + "");
}