Quiero plantear un evento cuando se cierra una ventana emergente, o preferiblemente, justo antes del cierre. Estoy almacenando el objeto de la ventana emergente como un objeto, pero no conozco ninguna forma de enlazar al evento de cierre, o un evento justo antes de que se cierre la ventana.¿Cómo puedo plantear un evento (jQuery o Javascript vainilla) cuando se cierra una ventana emergente?
var popupWindow = window.open("/popup.aspx", "popupWindow", "height=550,width=780");
¿Hay alguna forma de suscribirse al evento close utilizando jQuery, o simplemente javascript en bruto? Estoy usando jQuery y no puedo agregar otra biblioteca, así que si no se puede hacer en jQuery tendré que implementar mi propio sistema de eventos de alguna manera para que funcione en todos los navegadores.
ACTUALIZACIÓN:
He intentado usar el evento de descarga en jQuery y por alguna razón el evento se produce tan pronto como mi emergente se abre en lugar de cuando está cerrado. Si utilizo Firebug para configurar un punto de interrupción para retrasar el evento de descarga de la suscripción, el evento de descarga funciona de la manera que se supone, pero por alguna razón, no funciona correctamente cuando se permite que el javascript se ejecute de forma natural.
var popupWindow = window.open("/popup.aspx", "popupWindow", "height=550,width=780");
$(popupWindow.window).unload(function() { alert('hello'); });
¿Alguien tiene alguna idea de por qué el evento de descarga podría aumentar cuando se carga la ventana?
Otro problema es que me he dado cuenta de ese evento "descarga" de jQuery no se queda suscrito a la ventana como lo hace normalmente, si acabo de hacer:
popupWindow.onunload = function(){alert('hello')};
Parece darse de baja del evento cada tiempo que se levanta. Se supone que pase esto? Si no fuera por este error (¿o función?) En jQuery, sería mejor tener el evento levantado en carga ya que puedo verificar la propiedad popupWindow.closed
dentro del evento para asegurar que la ventana realmente se cerró.
Grande, esto solucionó mi problema;) –