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 <roxanalei...@yahoo.com.ar>

> **
> 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 <pedro.w...@gmail.com>
> *Sent:* Thursday, February 02, 2012 11:28 AM
> *To:* puntonet@mug.org.ar
> *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 <roxanalei...@yahoo.com.ar>
>
>> **
>> perdón.. si ésto se programa en la master no funciona como Andres
>> necesita?
>>
>>
>>  *From:* Pedro Wood <pedro.w...@gmail.com>
>> *Sent:* Thursday, February 02, 2012 10:01 AM
>> *To:* puntonet@mug.org.ar
>> *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 <andres.guzman...@gmail.com>
>>
>>> 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.
>>> *andres.guzman...@gmail.com
>>>
>>>
>>
>

Responder a