2011-06-07 12 views
10

estoy abriendo una ventana emergente conComprobar si una ventana emergente se cierra

var popup = window.open('...', '...'); 

Esta Javascript se define en un control. Este control luego se usa desde una página web. Quiero volver a cargar la página que abre esta ventana emergente cuando se cierra la ventana emergente.

Básicamente, el usuario debe ingresar algunas denominaciones en la ventana emergente y enviarlas. Estas denominaciones se almacenan en sesiones de usuario. Y cuando el usuario hace clic en enviar, cierro la ventana emergente y, al mismo tiempo, quiero actualizar la ventana que abre esta ventana emergente para volver a buscar las actualizaciones que hizo el usuario en la ventana emergente.

estoy tratando de hacer

var popup = window.open('...','...'); 
if (popup) { 
    popup.onClose = function() { popup.opener.location.reload(); } 
} 

supongo que estoy haciendo mal coz esto no es parece estar funcionando.

Para probar el problema, incluso he intentado esto pero no apareció ninguna alerta.

if (popup) { 
    popup.onclose = function() { 
    alert("1.InsideHandler"); 
    if (opener && !opener.closed) { 
     alert("2.Executed."); 
     opener.location.reload(true); 
    } else { 
     alert("3.NotExecuted."); 
    } 
    } 
} 
+0

¿Puede/ha intentado usar una ventana emergente modal? – atrljoe

+0

No desea enviar un formulario en una ventana modal a menos que lo envíe a un iFrame – mplungjan

Respuesta

6

Esto es lo que sugiero.

en la ventana emergente tienen

<script type="text/javascript"> 

function reloadOpener() { 
    if (top.opener && !top.opener.closed) { 
    try { 
     opener.location.reload(1); 
    } 
    catch(e) { } 
    window.close(); 
    } 
} 
window.ununload=function() { 
    reloadOpener(); 
} 
</script> 
<form action="..." target="hiddenFrame"> 
</form> 
<iframe style="width:10px; height:10px; display:none" name="hiddenFrame" src="about:blank"></iframe> 

continuación, en el proceso del servidor de retorno

<script> 
top.close(); 
</script> 

sugerencias viejos

Hay ninguna variable llamada ventana emergente en la ventana emergente. tratar

var popup = window.open('...','...'); 
if (popup) { 
    popup.onclose = function() { opener.location.reload(); } 
} 

o con una prueba:

popup.onclose = function() { if (opener && !opener.closed) opener.location.reload(); } 

PS: onclose no es compatible con todos los navegadores

PPS: location.reload toma un valor lógico, añadir cierto si usted no quiere cargar desde el caché como en opener.location.reload(1);

+0

La ventana se vuelve a cargar inmediatamente cuando se abre una ventana emergente. –

+0

por la forma en que sería onclose, minúsculas C. No es compatible con todos los navegadores – mplungjan

+0

para probar utilicé este >>> popup.onClose = function() {if (abridor &&! Abridor.closed) {alerta ("Ejecutado .. . "); opener.location.reload(); }} Pero la alerta nunca se muestra. –

0

En su lugar, debe utilizar un cuadro de diálogo modal como

var popup = window.showModalDialog("page.html", "", params); 

Esto detendría en esta línea hasta que se cierre el cuadro de diálogo.

En algún lugar de su página.html, usted codificará algunos javascript para configurar el window.returnValue, que es lo que colocará la variable emergente.

+0

Excepto que es difícil enviar un formulario en una ventana modal a menos que tenga un iframe para enviarlo al – mplungjan

+0

Y qué hay que evitar que lo coloquen en un iframe? El requisito –

+0

es usar una ventana –

1

Prueba esto:

window.opener.location.reload(true); 

o

En la ventana emergente antes de cerrar

window.opener.location.href = window.opener.location.href; 
window.close(); 
0

autorización así que lo que se hace es la siguiente.

crea un método "setWindowObjectInParent" y llámalo en la ventana emergente. var popupwindow;

function setWindowObjectInParent(obj) 
{ 
popupwindow = obj; 
} 

Ahora tiene un objeto al que puede llamar la atención.

Así, en la ventana emergente añadir

$(window).unload(function(){ 
window.opener.setWindowObjectInParent(); 
}); 
window.opener.setWindowObjectInParent(window); 

Este será desarmar el obj cuando la ventana emergente se cierra y establecer el objeto cuando se abre.

Por lo tanto, puede verificar si su ventana emergente está definida y luego llamar al foco.

Cuestiones relacionadas