ventana transparente parametros pagina open nueva modal flotante emergente centrada cargar abrir javascript jquery popup

transparente - ventana flotante javascript



¿Es posible abrir una ventana emergente con javascript y luego detectar cuando el usuario la cierra? (8)

La pregunta está prácticamente en el título.

¿Es posible (y cómo) abrir una ventana emergente con javascript y luego detectar cuando el usuario la cierra?

Estoy usando jquery dentro del proyecto así que una solución de jquery sería buena. ¡Aclamaciones!


Hacemos esto en uno de mis proyectos en el trabajo.

El truco es tener una función JS en tu página principal a la que planeas llamar cuando se cierre la ventana emergente, luego enganchar el evento de descarga en la ventana emergente.

La propiedad window.opener refiere a la página que generó esta ventana emergente.

Por ejemplo, si escribí una función llamada callingPageFunction en mi página original, la llamaría desde la ventana emergente de esta manera:

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

Dos notas:

  1. Esto debe estar envuelto en una función lista.
  2. Tengo una función anónima porque es posible que desee otra lógica allí

Hay una solución muy simple para su problema.

Primero crea un nuevo objeto que abrirá un pop como este:

var winObj = window.open(''http://www.google.com'',''google'',''width=800,height=600,status=0,toolbar=0'');

Para saber cuándo está cerrada esta ventana emergente, solo tiene que seguir comprobando esto con un ciclo como el siguiente:

var loop = setInterval(function() { if(winObj.closed) { clearInterval(loop); alert(''closed''); } }, 1000);

Ahora puede reemplazar la alerta con cualquier código de JavaScript que desee.

¡Que te diviertas! :)


Intente buscar en la unload y beforeunload unload eventos de la ventana. El monitoreo de estos debería darle la oportunidad de devolver la llamada cuando el DOM se descarga cuando la ventana se cierra por medio de algo como esto:

var newWin = window.open(''/some/url''); newWin.onunload = function(){ // DOM unloaded, so the window is likely closed. }


La única forma en que puedo pensar en este momento es crear una función en tu página principal que tenga un tiempo de espera que se llama luego de 10 segundos. En la función también puede verificar el valor de una cookie para ver si es verdadera o falsa. Cuando se cierra la ventana emergente, configure una cookie como verdadera.

Espero que esto ayude.


Para abrir una nueva ventana, llame a:

var wnd = window.open("file.html", "youruniqueid", "width=400, height=300");

Si solo quieres saber cuándo se cerrará esa ventana, utiliza onunload .

wnd.onunload = function(){ // do something };

Si desea una confirmación del usuario antes de que pueda cerrarla, utilice onbeforeunload .

wnd.onbeforeunload = function(){ return "are you sure?"; };


Sí, maneje el evento onbeforeUnload para la ventana emergente y luego invoque una función en la ventana principal usando:

window.opener.myFunction()



Si tiene control sobre el contenido de la ventana emergente, maneje el evento de unload la ventana allí y notifique a la ventana original a través de la propiedad del opener , verificando primero si se ha cerrado el abridor. Tenga en cuenta que esto no siempre funcionará en Opera.

window.onunload = function() { var win = window.opener; if (!win.closed) { win.someFunctionToCallWhenPopUpCloses(); } };

Como el evento de unload se activará cada vez que el usuario navegue fuera de la página en la ventana emergente y no solo cuando la ventana esté cerrada, debe verificar que la ventana emergente se haya cerrado realmente en someFunctionToCallWhenPopUpCloses :

var popUp = window.open("popup.html", "thePopUp", ""); function someFunctionToCallWhenPopUpCloses() { window.setTimeout(function() { if (popUp.closed) { alert("Pop-up definitely closed"); } }, 1); }

Si no tiene control sobre el contenido de la ventana emergente, o si uno de sus navegadores de destino no admite el evento de unload , se verá 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);