Detectar el cierre del navegador o de una pestaña

Resuelto cometta asked hace 14 años • 26 respuestas

¿Existe algún código JavaScript/jQuery entre navegadores para detectar si el navegador o una pestaña del navegador se está cerrando, pero no debido a que se hace clic en un enlace?

cometta avatar Oct 08 '10 15:10 cometta
Aceptado

Si le entiendo correctamente, querrá saber cuándo se cierra efectivamente una pestaña/ventana. Bueno, AFAIK, la única forma en JavaScript de detectar eso es usar eventos onunloado onbeforeunload.

Desafortunadamente (¿o afortunadamente?), esos eventos también se activan cuando abandona un sitio a través de un enlace o el botón Atrás de su navegador. Entonces esta es la mejor respuesta que puedo dar, no creo que puedas detectar de forma nativa un closeJavaScript puro. Corrígeme si me equivoco aquí.

jAndy avatar Oct 08 '2010 08:10 jAndy

De la documentación de MDN

Por algunas razones, los navegadores basados ​​en Webkit no siguen las especificaciones del cuadro de diálogo. Un ejemplo casi transversal sería similar al siguiente ejemplo.

window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\o/";

  (e || window.event).returnValue = confirmationMessage; //Gecko + IE
  return confirmationMessage;                            //Webkit, Safari, Chrome
});

Este ejemplo para manejar todos los navegadores.

mohamed-ibrahim avatar Oct 23 '2013 09:10 mohamed-ibrahim

Solución simple

window.onbeforeunload = function () {
    return "Do you really want to close?";
};
 avatar May 21 '2014 09:05
<body onbeforeunload="ConfirmClose()" onunload="HandleOnClose()">

var myclose = false;

function ConfirmClose()
{
    if (event.clientY < 0)
    {
        event.returnValue = 'You have closed the browser. Do you want to logout from your application?';
        setTimeout('myclose=false',10);
        myclose=true;
    }
}

function HandleOnClose()
{
    if (myclose==true) 
    {
        //the url of your logout page which invalidate session on logout 
        location.replace('/contextpath/j_spring_security_logout') ;
    }   
}

//Esto funciona en IE7, si estás cerrando una pestaña o un navegador con una sola pestaña

jyothis avatar Apr 08 '2011 10:04 jyothis