2012-07-09 44 views
9

Estoy creando una ventana emergente que va a hello.html. Quiero que mi original (página padre) vuelva a cargar cuando cierro la ventana emergente (hello.html). Parece que no puedo hacer que funcione, pero estoy cerca. Aquí está el código que tengo hasta ahora para la página principal y la página hello.html ....Refrescando ventana principal después de cerrar ventana emergente

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
function open_win() 
{ 
window.open("hello.html","_blank","toolbar=yes, location=yes, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=no, copyhistory=yes, width=400, height=400"); 
} 
</script> 


<script language="JavaScript"> 

function refreshParent() { 
    window.opener.location.href = window.opener.location.href; 

    if (window.opener.hello.html) 

{ 
    window.opener.hello.html.close() 
    } 
    window.close(); 
} 
</script> 


</head> 

<body> 

<script type="text/javascript"> 

var d=new Date(); 
document.write(d); 

</script> 

<form> 
<input type="button" value="Open Window" onclick="open_win()"> 
</form> 
</body> 
</html> 

aquí es el hello.html ...

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
</script> 
</head> 
<body> 

Hello 

</body> 
</html> 
+0

Compruebe esto: http://stackoverflow.com/questions/18321323/submit-form-reload-parent-and-close-child/36855748#36855748 podría ayudar a alguien – NoNaMe

Respuesta

11

Suscribirse al unload event en la ventana secundaria y llama a la ventana principal desde la ventana secundaria para notificar que se está cerrando.

Editar añadido un ejemplo de código ...

function popupClosing() { 
    alert('About to refresh'); 
    window.location.href = window.location.href; 
} 

var w = window.open("hello.html","_blank","toolbar=yes, location=yes, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=no, copyhistory=yes, width=400, height=400"); 
w.onunload = function() { 
    window.parent.popupClosing() 
}; 
+0

No sé lo que eso significa ... –

+0

gracias ... Mucho mejor :) –

3

hacerlo de esta manera, después de crear la ventana emergente seguimiento de su propiedad de estado "cerrado" en un intervalo. Pero esto se añade en el documento principal:

var pop = window.open("page.html", "popup", 
      "width=800,height=500,scrollbars=0,title='popup'"); 
    pop.focus(); 

    var monitor = setInterval(function() { 

     if (pop.closed) { 
      document.location.reaload() 
     } 

    }, 1000); 
+0

Esta es una solución bastante desagradable, pero es la única que funcionó para mí en Chrome 55.0.2883.87. Todos los otros métodos funcionarían bien en un evento onclick que me lleva a pensar que es Chrome el que restringe esto solo a las acciones iniciadas por el usuario, como cambiar el tamaño y mover la ventana. – Shaun

2

trate de poner el código JavaScript en su ventana emergente:

window.onunload = function(){ 
    window.opener.location.reload(); 
}; 

/caso onunload se disparará cuando se cierra la ventana emergente, y window.opener .location.reload() volverá a cargar la ventana de origen (principal)./

1

el evento click del emergente cerca de la función Try ...

window.opener.location.reload(true); 
0

Esta pieza de código funciona tan bien si una nueva ventana se extrae con la característica window.open.

setTimeout(function() { window.opener.location.reload(true); window.close();}, 3000); 
0

poner este script en el encabezamiento de la ventana emergente:

<script type='text/javascript'> 
window.onunload = function(){ 
window.opener.location.reload();} 
</script> 

Esto provocará que se recargue la ventana padre cuando se cierra la ventana emergente.

Cuestiones relacionadas