Foros del Web » Programando para Internet » Javascript »

Ejecutar una llamada Ajax cuando la ventana se cierre

Estas en el tema de Ejecutar una llamada Ajax cuando la ventana se cierre en el foro de Javascript en Foros del Web. Hola a todos, alguíen alguna vez hizo este proceso, de cerrar la ventana actual y antes de que se cierre se ejecute una llamada Ajax, ...
  #1 (permalink)  
Antiguo 15/08/2013, 10:35
 
Fecha de Ingreso: febrero-2011
Ubicación: Evolandia
Mensajes: 103
Antigüedad: 13 años, 2 meses
Puntos: 10
Ejecutar una llamada Ajax cuando la ventana se cierre

Hola a todos, alguíen alguna vez hizo este proceso, de cerrar la ventana actual y antes de que se cierre se ejecute una llamada Ajax, y una vez se ejecute dicha llamada ajax el navegador recien se cierre o te muestre un confirm como lo hace window.onbeforeunload, es para contabilizar tiempos de una visita desde que entra a una ventana hasta que la cierre, gracias.

Saludos !
  #2 (permalink)  
Antiguo 15/08/2013, 10:47
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Ejecutar una llamada Ajax cuando la ventana se cierre

NO.

El navegador una vez que se cierra, a lo mucho puede ejecutar algún código javascript (puede ser una llamada ajax) con window.onunload, pero el navegador no va a esperar una respuesta y continuará su cierre. Si tienes suerte, la llamada ajax se completará, pero en la mayoría de los casos, no le dará tiempo, así que aunque en teoría funcione, no se puede considerar una opción estable.
  #3 (permalink)  
Antiguo 15/08/2013, 11:30
 
Fecha de Ingreso: febrero-2011
Ubicación: Evolandia
Mensajes: 103
Antigüedad: 13 años, 2 meses
Puntos: 10
Respuesta: Ejecutar una llamada Ajax cuando la ventana se cierre

Efectivamente

bueno para los que quieren la solución inestable que encontré, lo rescatable de dicha solución sería que window.onbeforeunload es cross-browser

Código Javascript:
Ver original
  1. var dont_confirm_leave = 0; //set dont_confirm_leave to 1 when you want the user to be able to leave withou confirmation
  2. var leave_message = 'You sure you want to leave?'
  3.          
  4. window.onbeforeunload= function (e) {
  5.      
  6.   if(dont_confirm_leave!==1) {
  7.     if(!e) e = window.event;
  8.     //e.cancelBubble is supported by IE - this will kill the bubbling process.
  9.     e.cancelBubble = true;
  10.     e.returnValue = leave_message;
  11.     //e.stopPropagation works in Firefox.
  12.     if (e.stopPropagation) {
  13.       e.stopPropagation();
  14.       e.preventDefault();
  15.     }
  16.  
  17.     // acá va la llamada ajax o código js
  18.        
  19.     //return works for Chrome and Safari
  20.     return leave_message;
  21.   }
  22. };

Saludos!
  #4 (permalink)  
Antiguo 15/08/2013, 12:23
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Ejecutar una llamada Ajax cuando la ventana se cierre

Y porque no paras la salida siempre pero una vez parada ejecutas la llamada ajax y luego cuando se complete la cierras??

Etiquetas: ajax, cierre, llamada, ventana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:15.