L'applicazione che sto sviluppando è basata su jQuery Mobile e alcuni Ajax per aggiornare parti della pagina. Come i siti che utilizzano l'aggiornamento automatico, voglio interrompere l'aggiornamento dopo alcune condizioni (tempo/visibilità/ecc.) In modo che il mio server non sia bombardato da richieste non necessarie. L'applicazione ha una schermata di stato che viene comunemente controllata dall'utente, e idealmente i miei script saprebbero che la finestra del browser è stata messa a fuoco e sarebbe un buon momento per aggiornare. Ho fatto questo prima nella webapps desktop, ma sto notando un sacco di variazione sul lato mobile tra diverse piattaforme e browser, ad esempio:Come rilevare lo stato attivo del browser sui dispositivi mobili?
- window.onfocus() non/si attiva quando i guadagni del browser concentrano
- window.onfocus() è/non attivano quando le schede vengono commutati in un browser
- JavaScript è/non sospeso tra switch scheda e/o interruttori lontano dal browser
Il meglio che ho potuto fare finora è un insieme di euristiche che guardano gli eventi disponibili + quando c'era interazione utente tect con la pagina, ma è goffo e risultati nei casi in cui l'utente salta di nuovo alla pagina e deve aggiornare manualmente. Non buono.
Qualche tecnica intelligente per risolvere questo?
Una soluzione alternativa potrebbe essere quella di verificare l'input dell'utente. Che ne dici di impostare l'ora corrente in una variabile ogni volta che l'utente interagisce con la pagina. In questo modo è possibile creare una regola che attiva la chiamata ajax solo se la pagina è stata utilizzata per l'ultimo minuto o due. –
Attualmente sto facendo questo. Aiuta, ma c'è il caso comune nella mia applicazione in cui l'utente passa semplicemente alla pagina web o sblocca il suo telefono per guardare lo stato (nessuna interazione richiesta). – LVB