Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

310
Views
¿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 answers
Answer question

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, permanece 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 cuándo 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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!