La aplicación que estoy desarrollando se basa en jQuery Mobile y algunos Ajax para actualizar partes de la página. Al igual que los sitios que utilizan la actualización automática, quiero detener la actualización después de alguna condición (hora/visibilidad/etc.) para que mi servidor no sea bombardeado con solicitudes innecesarias. La aplicación tiene una pantalla de estado que comúnmente verifica el usuario, e idealmente mis scripts sabrían que la ventana del navegador se ha enfocado y sería un buen momento para actualizar. He hecho esto antes en aplicaciones web de escritorio, pero estoy notando una gran cantidad de variación en el lado móvil entre diferentes plataformas y navegadores, por ejemplo:¿Cómo detectar el foco del navegador en dispositivos móviles?
- window.onfocus() no/no disparar cuando las ganancias del navegador se centran
- window.onfocus() no/no se activan cuando las pestañas se conectan en un navegador
- Javascript está/no suspendido entre los interruptores de lengüeta y/o interruptores de distancia desde el navegador
Lo mejor que he podido hacer hasta ahora es un conjunto de heurísticas que analizan los eventos disponibles + cuando hubo interacción del usuario con la página, pero es torpe y los resultados en los casos en que el usuario salta de vuelta a la página y tiene que actualizar manualmente. No es bueno.
¿Alguna técnica inteligente para resolver esto?
Una solución alternativa podría ser comprobar la entrada del usuario. ¿Qué tal si establece la hora actual en una variable cada vez que el usuario interactúa con la página? De esta forma, puede crear una regla que solo active la llamada ajax si la página se ha utilizado durante el último minuto o dos. –
Actualmente estoy haciendo esto. Ayuda, pero existe el caso común en mi aplicación donde el usuario simplemente cambia a la página web o desbloquea su teléfono para ver el estado (no se requiere interacción). – LVB