Ciao a tutti,
in una pagina del mio sito ho un elenco di alcuni utenti, dove un pallino verde indica se l'utente è online e un pallino rosso se è offline. Ho definito i metodi PHP "online()" e "offline()", che scrivono un valore in un campo nel database e che possono essere richiamati dall'interno di un codice Javascript. Ho quindi scritto un codice Javascript, dove ho aggiunto un listener all'evento "visibilitychange" (l'unico che si attiva davvero, quando l'utente sta leggendo una pagina del sito o passa a un'altra pagina), e tutto funziona correttamente.
Ma se l'utente chiude la scheda del browser, invece di passare a un'altra, l'evento "visibilitychange" non viene attivato e l'utente rimane online. Ho provato ad aggiungere un listener agli eventi "beforeunload" e "unload", ma non vengono attivati quando l'utente chiude la scheda, a meno che non chiamo il metodo "preventDefault()", che a volte funziona e a volte no, ma mostra comunque la finestra di dialogo che chiede all'utente di confermare l'uscita dalla scheda, cosa che non voglio che faccia. E comunque non funziona sempre. Quindi, come posso impostare l'utente offline, quando chiude la scheda del browser?
Non sapendo se questo fosse possibile da codice Javascript, ho anche provato un'altra soluzione che in locale funziona, e cioè ho creato un evento nel database che ogni minuto controlla se il campo online è stato cambiato negli ultimi dieci minuti e in caso negativo imposta l'utente offline. Ma su Altervista sembra che non si possano definire eventi, quindi non so cosa fare. So che esistono i cron job, ma mi sembra che se ne possa impostare soltanto uno al giorno.
Qualche idea?
Grazie