He abierto una ventana emergente mediante window.open en JavaScript, quiero actualizar la página principal cuando cierre esta ventana emergente (evento onclose), ¿cómo puedo hacerlo?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Puedes acceder a la ventana padre usando 'window.opener', así que, escribe algo como lo siguiente en la ventana hija:
<script>
window.onunload = refreshParent;
function refreshParent() {
window.opener.location.reload();
}
</script>
La ventana emergente no tiene ningún evento de cierre que pueda escuchar.
Por otro lado, hay una propiedad closed que se pone a true cuando la ventana se cierra.
Puedes establecer un temporizador para comprobar esa propiedad cerrada y hacerlo así:
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);
¡Vea este [ejemplo de Fiddle que funciona][1]!
en la página de tu hijo, pon esto:
<script type="text/javascript">
function refreshAndClose() {
window.opener.location.reload(true);
window.close();
}
</script>
y
<body onbeforeunload="refreshAndClose();">
pero como un buen diseño de la interfaz de usuario, debe utilizar un "botón de cierre", ya que es más fácil de usar. ver el código de abajo.
<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' />