Estoy creando un sitio web con chat, etc. El problema es que no puedo definir correctamente si alguien está actualmente en el sitio web, por lo que no puedo configurar su actividad.
Escribí una función que es invocada por la etiqueta del cuerpo en el archivo HTML <body onload="changeStatus(true)" onunload="changeStatus(false)"> pero, como dije, parece que no funciona.
Cuando el estado de los primeros usuarios se establece en el valor en línea, el segundo cambia inmediatamente a fuera de línea. Cuando trato de escribir algo en la entrada del sitio web, también cambia el estado a fuera de línea, no importa quién esté escribiendo.
Actualmente estoy pensando en escribir esta parte en PHP solo usando la sesión, pero tal vez alguien sepa cómo hacerlo en JS.
function changeStatus(event) { if (event) { db.ref("status/" + username + "/" + receiver).set({ act: "online" }); } else { db.ref("status/" + username + "/" + receiver).set({ act: "offline" }); } }¿Está tratando de determinar si la página se ha cargado? Si es así, una simple carga de documentos jquery lo hará
https://learn.jquery.com/usando-jquery-core/document-ready/
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script> <script> $( window ).on( "load", function() { console.log( "window loaded" ); }); //or $(function() { console.log( "ready!" ); }); </script>si está tratando de capturar si el usuario está en la página, entonces pasar el mouse o hacer clic con el mouse podría ser mejor
https://api.jquery.com/mouseover/
espero que esto ayude
Parece que está tratando de crear un sistema de presencia, en cuyo caso le recomiendo consultar la documentación de Firebase sobre cómo administrar la presencia , cómo funciona onDisconnect , cómo detectar el estado de la conexión y la aplicación de presencia de muestra .