sip, y el window.event tampoco va a funcar en otro navegadr que no sea IE 2012/2/2 Leonardo Micheloni <[email protected]>
> te conviene usar jQuery para las llamadas Ajax, la implementación que > copiaste no va a funcionar en todos los navegadores > > On Thu, Feb 2, 2012 at 1:38 PM, Pedro Wood <[email protected]> wrote: > >> Lo probé (solo cambié la llamada ajax por un alert), solo funciona en >> IE y tanto al recargar la página, con click en el botón de refresh) como al >> hacer back o forward salta el alert también. >> No se invocó el unload cuando navegué a otra página ni cuando apreté F5 >> (en vez de hacer click en el botón). >> >> Lo que hace distinto a este script no es que esté en la master page, sino >> que además del unload usa esto: >> >> ((window.event.clientY < 0) || (window.event.clientX < 0)) >> || >> ((window.screenTop > 10000) && (window.screenLeft > 10000)) >> ) { >> >> Saludos, >> >> Pedro >> >> 2012/2/2 Ing. Roxana Leituz <[email protected]> >> >>> ** >>> hola!! estuve buscando.. y alguna vez me pasaron ésto y lo usé en una >>> master y funcionaba muy bien, se disparaba al cerrar el navegador o al >>> salir de la aplicación no al navegarla, no opino mucho porque no soy muy >>> experta pero en su momento me solucionó el problema, >>> saludos >>> >>> /* en el header el script */ >>> >>> >>> <script type="text/javascript" language="javascript"> >>> var controlarVentana = true; >>> function ComprobarSiCierran() { >>> if (controlarVentana) { >>> if ( >>> ((window.event.clientY < 0) || (window.event.clientX < 0)) >>> || >>> ((window.screenTop > 10000) && (window.screenLeft > 10000)) >>> ) { >>> MataSesion(); >>> } >>> } >>> } >>> >>> function MataSesion() { >>> >>> document.body.style.cursor = "wait"; >>> >>> strRequest = >>> "<Request><Method>MataSesion</Method></Request>"; >>> >>> xmlRequest = new >>> ActiveXObject("Msxml2.FreeThreadedDOMDocument"); >>> xmlRequest.loadXML(strRequest); >>> xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); >>> xmlhttp.open("POST", "./PaginaControladora.aspx", >>> false); >>> >>> if (window.event != null) { >>> try { >>> if ( >>> ((window.event.clientY < 0) || (window.event.clientX < 0)) >>> || >>> ((window.screenTop > 10000) && (window.screenLeft > 10000)) >>> ) { >>> xmlhttp.send(xmlRequest); >>> } >>> } >>> catch (e) { >>> xmlhttp.send(xmlRequest); >>> } >>> } >>> document.body.style.cursor = "default"; >>> } >>> >>> </script> >>> >>> >>> /* EN EL BODY */ >>> >>> <body onbeforeunload="ComprobarSiCierran();" >>> onunload="ComprobarSiCierran();"> >>> <form id="form1" runat="server"> >>> </form> >>> </body> >>> >>> /* despues tenes que hacer la página controladora que en éste caso es >>> PaginaControladora.aspx */ >>> >>> >>> >>> >>> *From:* Pedro Wood <[email protected]> >>> *Sent:* Thursday, February 02, 2012 11:28 AM >>> *To:* [email protected] >>> *Subject:* [puntonet] Cerrar explorador >>> >>> Hola Roxana, donde lo pongas no cambia, por más que esté en la master >>> page (o en el Layout) se va a disparar cuando navegue a otra página (con >>> click en back, o con click en 1 link) y no sólo en el caso de que cierre el >>> navegador que es lo que quiere Andrés. >>> >>> Saludos, >>> >>> Pedro >>> >>> >>> 2012/2/2 Ing. Roxana Leituz <[email protected]> >>> >>>> ** >>>> perdón.. si ésto se programa en la master no funciona como Andres >>>> necesita? >>>> >>>> >>>> *From:* Pedro Wood <[email protected]> >>>> *Sent:* Thursday, February 02, 2012 10:01 AM >>>> *To:* [email protected] >>>> *Subject:* [puntonet] Cerrar explorador >>>> >>>> Hola Andrés, el evento es así, se dispara en cualquier caso en que se >>>> "descargue" la página actual: >>>> >>>> The unload event is sent to the window element when the user navigates >>>> away from the page. This could mean one of many things. The user could have >>>> clicked on a link to leave the page, or typed in a new URL in the address >>>> bar. The forward and back buttons will trigger the event. Closing the >>>> browser window will cause the event to be triggered. Even a page reload >>>> will first create an unload event. >>>> >>>> http://jqapi.com/#p=unload >>>> >>>> No sé que es exactamente lo que estás tratando de hacer, por el nombre >>>> de la función que llamás pareciera que querés cerrar la sesión del usuario. >>>> Lo que podés tener es un botón/link de "cerrar sesión", y si el usuario en >>>> vez de utilizar eso directamente cierra el navegador, de todas formas va a >>>> perder la sesión cuando esta expire. >>>> >>>> Espero te sirva. >>>> Saludos, >>>> >>>> Pedro >>>> >>>> >>>> 2012/2/1 Andres Guzman <[email protected]> >>>> >>>>> Estimados(as): >>>>> >>>>> Junto con saludarlos, les quisiera hacer una consulta, estoy tratando >>>>> de que cuando mi cliente cierre el browser, antes de matar todas las >>>>> sesiones ejecute un proceso de mi aplicacion, el problema es que esto no >>>>> lo >>>>> logro hacer ya que por el lado del cliente con JavaScript puedo detectar >>>>> que el browser se cierra de la sgte forma. >>>>> >>>>> >>>>> <body onunload="CerrarExplorer();"> >>>>> blablablablablabla >>>>> >>>>> function CerrarExplorer() { >>>>> >>>>> if ((window.event.clientY < 0) || (window.event.clientX < -80)) >>>>> { >>>>> $.ajax({ >>>>> url: '<%:Url.Action("DesconectarUsuario", "Home") %>', >>>>> type: "post", >>>>> cache: false >>>>> }); >>>>> } >>>>> } >>>>> >>>>> ahora mi problema es que cuando Actualizo la página o presiono el >>>>> boton atras o siguiente del navegador, tambien se ejecuta, alguien a >>>>> podido >>>>> hacer algo pero solo cuando se cierre el navegador. Algunos datos que les >>>>> puedan servir, estoy trabajando con MVC2 framework 4 >>>>> >>>>> Desde ya muchas gracias. >>>>> >>>>> -- >>>>> Saluda ATTE. >>>>> *Andrés Guzmán Oyaneder. >>>>> *[email protected] >>>>> >>>>> >>>> >>> >> > > > -- > Leonardo Micheloni > @leomicheloni > >
