Pregunta Abra la ventana emergente y actualice la página principal en la ventana emergente cerrada


Abrí una ventana emergente por window.open en JavaScript, quiero actualizar la página principal cuando cierro esta ventana emergente. (¿Evento onclose?) ¿Cómo puedo hacer eso?

window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");

75
2018-05-29 02:23


origen


Respuestas:


Puede acceder a la ventana padre usando 'window.opener', entonces, escriba algo como lo siguiente en la ventana secundaria:

<script>
    window.onunload = refreshParent;
    function refreshParent() {
        window.opener.location.reload();
    }
</script>

193
2018-05-29 02:35



La ventana emergente no tiene ningún evento cercano que pueda escuchar.

Por otro lado, hay una propiedad cerrada que se establece en true cuando se cierra la ventana.

Puede configurar un temporizador para verificar 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); 

Mira esto ejemplo de Fiddle trabajando!


29
2018-05-29 02:31



en su página secundaria, coloque estos:

<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 UI, debes usar un Cerrar button porque es más fácil de usar ver el código a continuación.

<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' />

11
2018-05-29 02:38



window.open devolverá una referencia a la ventana recién creada, siempre que la URL abierta cumpla con La misma política de origen.

Esto debería funcionar:

function windowClose() {
    window.location.reload();
}

var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;​

3
2018-05-29 02:42



Yo uso esto:

<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()''>

cuando la ventana se cierra, refresca la ventana principal.


3
2017-10-02 03:26



Si su aplicación se ejecuta en un navegador compatible con HTML5. Puedes usar postMessage. El ejemplo dado allí es bastante similar al tuyo.


1
2018-05-29 02:39



En mi caso, abrí una ventana emergente al hacer clic en el botón de enlace en la página principal. Para actualizar el padre al cerrar el hijo usando

window.opener.location.reload();

en la ventana hija provocó que se volviera a abrir la ventana secundaria (podría ser debido al estado de la vista, supongo. Corrígeme si estoy equivocado). Así que decidí no volver a cargar la página en el padre y cargar la página asignándole nuevamente la misma URL.

Para evitar que la ventana emergente se abra nuevamente después de cerrar la ventana emergente, esto podría ayudar,

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

1
2018-06-27 13:02



Prueba esto

        self.opener.location.reload(); 

Abra el padre de una ventana actual y vuelva a cargar la ubicación.


1
2017-09-16 10:41