2011-03-09 23 views
8

Quiero ejecutar una función cuando se cierra una ventana secundaria abierta. Niño código de apertura de la ventana es:javascript: ¿Cómo puede una ventana principal saber que su ventana hija está cerrada?

outWin = window.open (pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=600, height=400, top=100, left=100); 

Quiero llamar a una función de JavaScript escrito en window.I padres estoy usando YUI-2 para desarrollar el plugin. ¿Cómo puedo hacer que funcione? ¿qué evento debería registrarse?

gracias de antemano.

+0

Consulte también - http://stackoverflow.com/questions/5712195/js-listen-when-child-window-is-closed –

Respuesta

3

Usted puede tratar de acces la ventana padre por:

window.opener.functionThatYouWant(); 

Este código está dentro de la ventana de niño.

Pero si abre una ventana que la URL está en otro dominio (no localhost), no puede acceder a ella debido a problemas de seguridad.

Utilicé este código en Firefox, no estoy seguro de si funciona con navegador cruzado.

+1

Funciona bien en Safari, pero no parece funcionar en Chrome. – grc

+2

Sí, parece tener este problema. Pero la respuesta de Mark a continuación parece mejor y es crossbrowser, pruébalo también. – JeanK

31

Podría hacer algo como esto.

var intervalID, childWindow; 

childWindow = window.open("http://www.google.com"); 

function checkWindow() { 
    if (childWindow && childWindow.closed) { 
     window.clearInterval(intervalID); 
     alert('closed'); 
    } 
} 
var intervalID = window.setInterval(checkWindow, 500); 

Referencias: window.setInterval y esto answer.

Ejemplo simple en jsfiddle.

+4

No puedo entender por qué la respuesta de OPiazao está marcada como la respuesta correcta aquí. ESTA es la forma correcta de manejarlo en función de los requisitos descritos en el PO. – Carnix

Cuestiones relacionadas