Ho aperto una finestra popup con window.open in JavaScript, voglio aggiornare la pagina madre quando chiudo questa finestra popup (evento onclose?) come posso farlo?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Puoi accedere alla finestra padre usando 'window.opener', quindi, scrivi qualcosa come il seguente nella finestra figlio:
<script>
window.onunload = refreshParent;
function refreshParent() {
window.opener.location.reload();
}
</script>
La finestra pop-up non ha alcun evento di chiusura che si possa ascoltare.
D'altra parte, c'è una proprietà closed che viene impostata a true quando la finestra viene chiusa.
Potete impostare un timer per controllare questa 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);
Vedi questo [esempio di Fiddle funzionante][1]!
sulla pagina del tuo bambino, metti questi:
<script type="text/javascript">
function refreshAndClose() {
window.opener.location.reload(true);
window.close();
}
</script>
e
<body onbeforeunload="refreshAndClose();">
ma come un buon design UI, si dovrebbe usare un button
di chiusura perché è più facile da usare. vedere il codice qui 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' />