Si usted tiene control sobre el contenido de la ventana emergente, manejar el evento de la ventana unload
allí y notificar a la ventana original a través de la propiedad opener
, verificando primero si el abridor ha sido cerrado. Tenga en cuenta que esto no siempre funcionará en Opera.
window.onunload = function() {
var win = window.opener;
if (!win.closed) {
win.someFunctionToCallWhenPopUpCloses();
}
};
Dado que el evento unload
se disparará cada vez que el usuario salga de la página en la ventana emergente y no sólo cuando la ventana está cerrada, usted debe comprobar que la emergente realidad ha cerrado en someFunctionToCallWhenPopUpCloses
:
var popUp = window.open("popup.html", "thePopUp", "");
function someFunctionToCallWhenPopUpCloses() {
window.setTimeout(function() {
if (popUp.closed) {
alert("Pop-up definitely closed");
}
}, 1);
}
Si usted no tiene control sobre el contenido de la ventana emergente, o si uno de los navegadores de destino no admite el evento unload
, que está reducido a algún tipo de solución de votación en la ventana principal . Ajuste el intervalo para adaptarse.
var win = window.open("popup.html", "thePopUp", "");
var pollTimer = window.setInterval(function() {
if (win.closed !== false) { // !== is required for compatibility with Opera
window.clearInterval(pollTimer);
someFunctionToCallWhenPopUpCloses();
}
}, 200);
¿un navegador emergente? – Reigel
define "pop-up". ¿Estamos hablando de algún tipo de cuadro modal representado en la página? ¿Una alerta de javascript? Una nueva ventana del navegador? –
Una nueva ventana del navegador ... disculpa por mi falta de claridad – Pablo