Foro

Beforeunload en Chrome

0
Hola, Lo que he estoy intentando realizar es capturar los eventos: -F5 (refresh) -back -cerrar la ventana -ir a otra opcion de menu Es decir todo evento de "usuario" que me saque de la ventana actual Para esto en una primera instancia he intentado con esto: Ext.EventManager.on(window, 'beforeunload', function(){ miRpc.miMetodo(valor); }, this, {single: true}); Esto funcionó para algunos casos. Luego he leído que debe ser una llamada asincrónica, entonces: Ext.EventManager.on(window, 'beforeunload', function(){ Ext.Ajax.request({ url: 'router.php', method: 'GET', params: { extAction: 'miRpc', extMethod: 'miMetodo', extTID: 9999, job_id: valor }, async: false }); }, this, {single: true}); Esto ultimo funciona bien y para todos los casos en: -IE -Mozilla Pero en Chrome no funciona cuando cierro la ventana del navegador o cuando voy a otra opcion de menu. Esto es curioso por que cuando pruebo haciendo lo siguiente y quiero cerrar chrome, salta el aviso. He leído tambien que en Opera tampoco funciona 'beforeunload'. window.beforeunload = function() { return "Sure?"; } Espero puedan ayudarme. Gracias, saludos.
0
Encontré cual es el problema de fondo, el tiempo que lleva llamar al Server y ejecutar la sentencia ordenada es claramente mayor a lo que demora javascript en "refrescar la pantalla" o "ir a menu principal", esto es creo debido al asincronismo...entonces ahora tengo que ver la manera de retardar las ejecuciones de "refresss" o "ir menu principal" para luego de que haya vuelto del server lanzarlas.
0
a mi esto me funciona en todos los navegadores: salir = false; //esto es porque tengo un botón para salir de la aplicación y allí le asigno true y sale sin preguntar window.onbeforeunload = function(e){ if (salir === false){ textosalir = 'Al salir o refrescar perdera los cambios que no haya guardado'; a = e || window.event; if (a) { a.returnValue = textosalir; } return textosalir; } }; espero te sirva
0
Gracias tokkaido, Es verdad ¡¡ funciona, pero nose por que razón no funciona cuando se trata de una llamada "rpc" o "ajax". Sigo probando e intentando que funcione... Gracias

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.