una - javascript detectar cierre pestaña
Detecta cuando un usuario abandona un sitio web (5)
Intento crear mi propia biblioteca de acceso a sitios web (por diversión), como Google Analytics, donde puedo detectar cuándo un usuario accede a mi sitio web, qué páginas ven, etc.
¿Hay alguna forma de determinar cuándo el usuario abandona una página y / o abandona el sitio web para siempre?
He codificado con éxito (en python) la detección cuando el usuario primero accede a mi sitio (usando una cookie) y cómo determinar qué páginas ven. Pero no sé cómo podría detectar cuando el usuario abandona el sitio web para siempre.
¿Hay alguna forma de javascript (tal vez puedo detectar cuando la página / url está cambiando?). Sé que en HTTP hay un encabezado de referencia que me dice de dónde vino el usuario, tal vez cuando el usuario se muda a otro sitio web (fuera del mío), puedo ser notificado de esto (porque seré el referente en esa solicitud HTTP) ? ¿Estoy en lo correcto?
Hay un evento de descarga que puede manejar en JavaScript. Por ejemplo:
window.onunload = unloadPage;
function unloadPage()
{
alert("unload event detected!");
}
Lamentablemente, no hay forma de saber a dónde va realmente el usuario cuando sale de la página actual (a diferencia de un referente, cuando ingresa a la página).
Una idea es establecer una variable (tal vez en la base de datos) en el controlador de descarga (a través de la llamada AJAX o lo que no), y luego eliminarla si el usuario ingresa a otra página poco después de eso. Cualquiera que sea el registro que no se elimine (o que se desactive, elimina por software) es su último evento de salida antes de que el usuario realmente rebote en su sitio web o cierre el navegador.
Puede enlazar a la ventana.antes de descargar o de window.unload.
Ninguno de estos métodos es muy confiable.
Puede marcar todos los enlaces en su sitio como enlaces internos o externos. Deben apuntar a su sitio, pero luego redireccionar a la ubicación, seleccionada por el usuario. Antes de la redirección, puede señalar a ese usuario que se alejó de su sitio.
Pero.
Será mejor que ponga en cada página de su sitio un pequeño script que (digamos cada 20-30 segundos) haga una solicitud GET a una url específica en su sitio. Para que pueda rastrear el número de solicitudes de cada usuario.
Mientras el usuario siga las reglas que esperas, la conexión previa funcionará. Eso significa, cerrar una pestaña, cerrar la ventana o navegar a otro sitio.
Sin embargo, no hay manera de detectar esto de manera confiable con javascript, antes de descargar no se dispara en muchos casos, como cerrar el navegador (ctrl + q), bloqueo del navegador, historial (volver) y la ópera y algunas versiones de Chrome tienen limitaciones. soporte para antes de descargar.
Si desea detectarlo con alta precisión , debe enviar periódicamente solicitudes Ajax que demuestren que el usuario "todavía está vivo". registrar esas solicitudes en una base de datos o archivo y analizarlo por secuencia de tiempo.
Por lo tanto, si "hace ping" a la base de datos cada 20 segundos, puede saber por consultas bastante simples que el navegador no ha "detectado" un momento después y determinar que el usuario ya no está en el sitio.
Usando jquery puedes activar esto:
$(window).bind(''beforeunload'', function() {
// ajax call perhaps
// triggering a write to db or filesystem...
});
Forma pura javascript:
<html>
<head>
<script>
function closeIt()
{
return "Any string value here forces a dialog box to /n" +
"appear before closing the window.";
}
window.onbeforeunload = closeIt;
</script>
</head>
<body>
<a href="http://www.somewhere.com">Click here to navigate to
www.somewhere.com</a>
</body>
</html>