Foros del Web » Creando para Internet » HTML »

Ejecutar funcion JS al cerrar ventana HTML

Estas en el tema de Ejecutar funcion JS al cerrar ventana HTML en el foro de HTML en Foros del Web. Hola a todos... Como puedo ejecutar una funcion JS en el momento que presiono la "X" (Cerrar) en el Explorador Web. Lo que quiero exactamente ...
  #1 (permalink)  
Antiguo 16/04/2020, 22:31
 
Fecha de Ingreso: abril-2016
Mensajes: 14
Antigüedad: 4 años, 1 mes
Puntos: 0
Pregunta Ejecutar funcion JS al cerrar ventana HTML

Hola a todos...

Como puedo ejecutar una funcion JS en el momento que presiono la "X" (Cerrar) en el Explorador Web.

Lo que quiero exactamente es registrar en mi BD la hora exacta en que el boton "X" se presiona, o sea el momento en el que se cierra una Sesion.

He probado con las funciones "onunload", "onbeforeunload" pero no funciona.

Gracias por la ayuda!!!
  #2 (permalink)  
Antiguo 16/04/2020, 23:25
 
Fecha de Ingreso: abril-2011
Mensajes: 125
Antigüedad: 9 años, 2 meses
Puntos: 44
Respuesta: Ejecutar funcion JS al cerrar ventana HTML

Existe un API llamado Beacon, que te permite enviar información via POST justo antes de que el usuario abandone el sitio web. Por ejemplo:

Código Javascript:
Ver original
  1. window.onunload = function analytics(event) {
  2.   if (!navigator.sendBeacon) return;
  3.  
  4.   var url = "/analytics"; // la ruta de tu endpoint
  5.  
  6.   var data = "location=" + encodeURIComponent(location.href) + "&ts=" + Date.now();
  7.  
  8.   navigator.sendBeacon(url, data);
  9. };

Esto te envía via POST a /analytics los parámetros location (con la rula del sitio) y ts (con el timestamp) para trackear la actividad del usuario. Puedes añadir todos los parámetros que quieras, es una petición http normal.

  #3 (permalink)  
Antiguo 17/04/2020, 11:38
Avatar de haggenx  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 812
Antigüedad: 13 años, 3 meses
Puntos: 24
De acuerdo Respuesta: Ejecutar funcion JS al cerrar ventana HTML

Cita:
Iniciado por prueba230683 Ver Mensaje
Existe un API llamado Beacon, que te permite enviar información via POST justo antes de que el usuario abandone el sitio web.
Interesante.
__________________
Mi blog informático http://marjuanm.blogspot.mx
Fanpage del blog https://www.facebook.com/pages/Mis-p...36397183215592
  #4 (permalink)  
Antiguo 17/04/2020, 11:42
Avatar de haggenx  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 812
Antigüedad: 13 años, 3 meses
Puntos: 24
Respuesta: Ejecutar funcion JS al cerrar ventana HTML

Cita:
Iniciado por Raditz99 Ver Mensaje
Hola a todos...

Como puedo ejecutar una funcion JS en el momento que presiono la "X" (Cerrar) en el Explorador Web.

Lo que quiero exactamente es registrar en mi BD la hora exacta en que el boton "X" se presiona, o sea el momento en el que se cierra una Sesion.

He probado con las funciones "onunload", "onbeforeunload" pero no funciona.

Gracias por la ayuda!!!
Este script te permite detectar el cierre de una ventana popup, solo debes abrir la pagina que quieras (en un popup, aunque si le quitas todos los parametros de ancho, alto, etc se te abre como una pestaña nueva en Chrome) mediante la función openwindow y en detectpopupcloseevent pones lo que quieras que haga al cerrarse esa ventana.

Código:
<script language="javascript">

var popUp;

function detectpopupcloseevent()
{
                    
  if(!popUp.closed)
    window.setTimeout("detectpopupcloseevent();", 100);
  else
    alert("he cerrado la ventana");

}

function openwindow(url, winid)
{

  try
  {
    
    popUp = window.open(url,winid,'status=0,toolbar=0,width=495,height=666,resizable=0,menubar=0,location=0,directories=0');
    detectpopupcloseevent();
        
  }
  catch(e)
  {
    alert("Popup blocker detected!" + e.toString());
  }

}

</script>
__________________
Mi blog informático http://marjuanm.blogspot.mx
Fanpage del blog https://www.facebook.com/pages/Mis-p...36397183215592
  #5 (permalink)  
Antiguo 14/05/2020, 22:56
 
Fecha de Ingreso: abril-2016
Mensajes: 14
Antigüedad: 4 años, 1 mes
Puntos: 0
Respuesta: Ejecutar funcion JS al cerrar ventana HTML

Cita:
Iniciado por prueba230683 Ver Mensaje
Existe un API llamado [URL="https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API/Using_the_Beacon_API"]Beacon[/URL], que te permite enviar información via POST justo antes de que el usuario abandone el sitio web. Por ejemplo:

Código Javascript:
Ver original
  1. window.onunload = function analytics(event) {
  2.   if (!navigator.sendBeacon) return;
  3.  
  4.   var url = "/analytics"; // la ruta de tu endpoint
  5.  
  6.   var data = "location=" + encodeURIComponent(location.href) + "&ts=" + Date.now();
  7.  
  8.   navigator.sendBeacon(url, data);
  9. };

Esto te envía via POST a /analytics los parámetros location (con la rula del sitio) y ts (con el timestamp) para trackear la actividad del usuario. Puedes añadir todos los parámetros que quieras, es una petición http normal.

Como podría ejecutar la función JS usando la API Beacon que hace un llamado a un archivo PHP que se encarga de hacer el insert en la BD?
  #6 (permalink)  
Antiguo 15/05/2020, 00:33
 
Fecha de Ingreso: abril-2011
Mensajes: 125
Antigüedad: 9 años, 2 meses
Puntos: 44
Respuesta: Ejecutar funcion JS al cerrar ventana HTML

Pon en la variable url la ruta hacia tu fichero PHP. Luego, en la variable data incluyes los parámetros que quieras pasar a dicho PHP cuando el usuario abandone la página.
  #7 (permalink)  
Antiguo 21/05/2020, 19:05
 
Fecha de Ingreso: abril-2016
Mensajes: 14
Antigüedad: 4 años, 1 mes
Puntos: 0
Respuesta: Ejecutar funcion JS al cerrar ventana HTML

Sigue sin funcionar, no se hace el Update en la BD, aqui dejo mi codigo... Ojala puedan ayudarme:

Código Javascript:
Ver original
  1. window.onunload = function analytics(event) {
  2.     if (!navigator.sendBeacon)
  3.         return;
  4.  
  5.     var cadena = document.getElementById("codUsuario").value; //Capturo el codUsuario para buscarlo luego en la BD y hacer el UPDATE
  6.     //alert(cadena);
  7.     var url = ".lib/link/linkIndex.php"; //Ruta del PHP para que haga el UPDATE
  8.     var data = "cerrarSesion=" + cadena; // $_POST['cerrarSesion'] = 'codUsuario'
  9.     //alert(url + "|" + data);
  10.     navigator.sendBeacon(url, data);
  11. };
  #8 (permalink)  
Antiguo 22/05/2020, 00:03
 
Fecha de Ingreso: abril-2011
Mensajes: 125
Antigüedad: 9 años, 2 meses
Puntos: 44
Respuesta: Ejecutar funcion JS al cerrar ventana HTML

Resulta que esta función envía la información via POST en formato text/plain, y PHP no es capaz de procesar este formato directamente (no se puede acceder desde $_POST). Para que se envíe en formato application/x-www-form-urlencoded, que sí es parseado por PHP, se debe hacer un pequeño cambio:

Código Javascript:
Ver original
  1. window.onunload = function analytics(event) {
  2.   if (!navigator.sendBeacon) return;
  3.  
  4.   var url = "/analytics"; // la ruta de tu endpoint
  5.  
  6.   var data = "location=" + encodeURIComponent(location.href) + "&ts=" + Date.now();
  7.  
  8.   navigator.sendBeacon(url, new URLSearchParams(data));
  9. };

y en tu caso

Código Javascript:
Ver original
  1. window.onunload = function analytics(event) {
  2.     if (!navigator.sendBeacon)
  3.         return;
  4.  
  5.     var cadena = document.getElementById("codUsuario").value; //Capturo el codUsuario para buscarlo luego en la BD y hacer el UPDATE
  6.     //alert(cadena);
  7.     var url = ".lib/link/linkIndex.php"; //Ruta del PHP para que haga el UPDATE
  8.     var data = "cerrarSesion=" + cadena; // $_POST['cerrarSesion'] = 'codUsuario'
  9.     //alert(url + "|" + data);
  10.     navigator.sendBeacon(url, new URLSearchParams(data));
  11. };


Última edición por prueba230683; 22/05/2020 a las 00:08



La zona horaria es GMT -6. Ahora son las 13:14.