Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

365
Vistas
¿Cómo medir el tiempo de permanencia en una página?

Me gustaría medir el tiempo (en segundos en números enteros o minutos en flotantes) que un usuario pasa en una página. Sé que hay un evento de descarga que puedo desencadenar cuando abandonan la página. Pero, ¿cómo obtener un tiempo que ya han pasado allí?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La respuesta aceptada es buena, pero (como alternativa) he puesto algo de trabajo en una pequeña biblioteca de JavaScript que multiplica el tiempo que un usuario está en una página web. Tiene el beneficio adicional de rastrear con mayor precisión (aunque no perfectamente) cuánto tiempo un usuario interactúa realmente con la página. Ignora las veces que un usuario cambia a diferentes pestañas, se queda inactivo, minimiza el navegador, etc. El método de Google Analytics sugerido en la respuesta aceptada tiene la deficiencia (según tengo entendido) de que solo verifica cuando su solicitud es manejada por usted. dominio. Compara el tiempo de la solicitud anterior con el tiempo de la nueva solicitud y lo llama "tiempo dedicado a su página web". En realidad, no sabe si alguien está viendo su página, ha minimizado el navegador, ha cambiado de pestaña a 3 páginas web diferentes desde la última vez que cargó su página, etc.

Editar: he actualizado el ejemplo para incluir el uso actual de la API.

Edición 2: Actualización del dominio donde está alojado el proyecto

https://github.com/jasonzissman/TimeMe.js/

Un ejemplo de su uso:

Incluye en tu página:

 <!-- Download library from https://github.com/jasonzissman/TimeMe.js/ --> <script src="timeme.js"></script> <script type="text/javascript"> TimeMe.initialize({ currentPageName: "home-page", // page name idleTimeoutInSeconds: 15 // time before user considered idle }); </script>

Si desea informar los tiempos usted mismo a su backend:

 xmlhttp=new XMLHttpRequest(); xmlhttp.open("POST","ENTER_URL_HERE",true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); var timeSpentOnPage = TimeMe.getTimeOnCurrentPageInSeconds(); xmlhttp.send(timeSpentOnPage);

TimeMe.js también admite el envío de datos de tiempo a través de websockets, por lo que no tiene que intentar forzar una solicitud http completa en el evento document.onbeforeunload .

over 4 years ago · Santiago Trujillo Denunciar

0

Si usa Google Analytics, proporcionan esta estadística, aunque no estoy seguro de cómo la obtienen exactamente.

Si desea lanzar el suyo, deberá tener alguna solicitud AJAX que se envíe a su servidor para iniciar sesión.

jQuery tiene un método .unload(...) que puede usar como:

 $(document).ready(function() { var start = new Date(); $(window).unload(function() { var end = new Date(); $.ajax({ url: "log.php", data: {'timeSpent': end - start}, async: false }) }); });

Ver más aquí: http://api.jquery.com/unload/

La única advertencia aquí es que utiliza el evento beforeunload de javascript, que no siempre se activa con el tiempo suficiente para realizar una solicitud AJAX como esta, por lo que razonablemente perderá una gran cantidad de datos.

Otro método sería sondear periódicamente el servidor con algún tipo de mensaje "TODAVÍA AQUÍ" que se puede procesar de manera más consistente, pero obviamente mucho más costoso.

over 4 years ago · Santiago Trujillo Denunciar

0

Además de la respuesta de Jason, aquí hay un pequeño fragmento de código que debería funcionar si prefiere no usar una biblioteca, considera cuándo el usuario cambia de pestaña o enfoca otra ventana.

 let startDate = new Date(); let elapsedTime = 0; const focus = function() { startDate = new Date(); }; const blur = function() { const endDate = new Date(); const spentTime = endDate.getTime() - startDate.getTime(); elapsedTime += spentTime; }; const beforeunload = function() { const endDate = new Date(); const spentTime = endDate.getTime() - startDate.getTime(); elapsedTime += spentTime; // elapsedTime contains the time spent on page in milliseconds }; window.addEventListener('focus', focus); window.addEventListener('blur', blur); window.addEventListener('beforeunload', beforeunload);
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda