Razo Duke12

Friday, April 07, 2006

Detectar cierre de navegador

En las aplicaciones donde necesitas registrar los movimientos que realizan los usuarios que se logean a tu sistema web, a veces es necesario trackear
los tiempos que se mantuvieron en el sitio, lo ideal sería detectar cuando el usuario cierra la ventana del explorador para que tu puedas registrar
la fecha:hora de terminación de la sesión u otros procesos a la misma acción. La onda es tratar de activar algun proceso "listener" que envie una señal
al server cuando se cierra el explorador y realice las operaciones necesarias. En mi caso yo necesitaba registrar la fecha de salida para entregar un reporte de
sesiones de usuarios.

¿Como lo logre?

Utilizando:
*** una función sencilla por medio de Dojo (Ajax) que me funcionó como listener, esta funcion avienta una señal al script "salir.php" al momento de cerrar la ventana.

OJO SUSTITUIR # por las llaves para tags mayor o menor que,,, jejej

#script type="text/javascript" src="dojo/dojo.js"##/script#
#script type="text/javascript"#
dojo.require("dojo.io.*");
dojo.require("dojo.event.*");
dojo.require("dojo.html");
dojo.require("dojo.fx.*");

listener = function(e){
var part = false;
var meth = "GET";
var kw = {
url: "salir.php?fin=si",
formNode: dojo.byId("frmlo"),
load: function(type, data) { window.close(); },
error: function(type, error) { alert(String(type) + "\n" + String(error)); },
method: meth,
multipart: part
};
dojo.io.bind(kw);
}

#/script#


*** Use también el evento OnBeforeUnload de los navegadores.
Este evento se activa cuando antes de que la pagina se descargue de memoria ya sea al ir a otra pagina mediante un link o la barra de dirección,
recargar la pagina con F5 o Refresh del menu contextual o barra de menu. En el body se activan las funciones listener(), se deshabilita el click
derecho del ratón y se activa tambien una funcion que desactiva la tecla F5.

Es importante comentar que esta ventana se tuvo que abrir en tipo popup con el window.open('url','win_name','menu=no,location=no')
para deshabilitar barras de menu, de navegacion, de dirección para evitar que se active el evento OnBeforeUnload, solo cuando se
cierre el explorador que es lo q importa en esta caso.

#body onBeforeUnload = "listener()" oncontextmenu="return false" onload="setEventListener(disableKey); " #

Pro: puedes registrar la fecha:hora en que se cerro el navegador en alguna base de datos.

Contra: Deshabilitar muchas cosas, la navegabilidad se la tienes que dar con tu aplicación, con links.

9 Comments:

  • Muy interesante, aunque aun no entiendo aquello del AJAX

    aun asi fue util.
    Saludos!!

    visita:

    Memorias de un programador

    By Blogger roliwar, at 5:52 PM  

  • me puedes mandar tu script de dojo.js porfa, por que no me jala
    o de donde lo exporto, si puedes mandalo a lerhling@gmail.com

    atte miguel

    By Blogger miguel, at 11:59 AM  

  • puedes enviarlo tambien a mascruz132915@yahoo.com

    By Anonymous Anonymous, at 2:34 PM  

  • greetings to all.
    I would first like to thank the writers of this blog by sharing information, a few years ago I read a book called guanacaste costa rica in this book deal with questions like this one.

    By Blogger Dean, at 3:32 AM  

  • Hello .. firstly I would like to send greetings to all readers. After this, I recognize the content so interesting about this article. For me personally I liked all the information. I would like to know of cases like this more often. In my personal experience I might mention a book called Generic Viagra in this book that I mentioned have very interesting topics, and also you have much to do with the main theme of this article.

    By Blogger niz, at 11:40 PM  

  • hola men posteate todos los codigo para poderlos probar oks.. thanks
    xsea mi correo: rogil23@facebook.com

    By Anonymous Anonymous, at 11:51 PM  

  • Buenas!!!
    Muy interesante.. podrías facilitarnos el codigo faltante, por favor! Nos sería reútil, Gracias!
    Saludos
    mra_bcr@hotmail.com

    By Anonymous Maru, at 12:01 PM  

  • Hola quisiera que por favor me mandaras un ejemplo de como funciona, te lo agradecería mucho gracias de ante mano! te dejo mi correo jonathanco22@hotmail.com

    By Anonymous jonathan, at 10:12 PM  

  • hola , me podrias enviar un ejemplo del código por favor
    luis.a.jarpa@outlook.cl

    By Blogger Luis Jarpa, at 8:14 AM  

Post a Comment

<< Home