Estoy probando la aplicación fuera de línea HTML5. Para hacer eso, detendré mi servidor web local (IIS) y la aplicación abierta. Se carga bien, pero falló tan pronto como solicitó el método API del lado del servidor.HTML5/JS - compruebe que la aplicación está fuera de línea
Quiero evitar eso y en lugar de $ .get ('/ api/method') leer los datos de mi almacenamiento local. Pero puedo encontrar cualquier facilidad para entender que mi aplicación está fuera de línea.
if (/* online */) {
// fire ajax
} else {
// ask localstorage
}
He intentado utilizar navigation.onLine
pero parece ser siempre verdad (al menos puedo ver que en Chrome).
¿Tiene alguna sugerencia?
EDIT: teniendo en cuenta las respuestas actuales. La aplicación entiende claramente que está fuera de línea, ya que toma recursos de acuerdo con cache.manifest. Es ridículo para mí, ese cliente necesita hacer cualquier tipo de trucos y pings. Supongo que debería haber una manera fácil de verificar el modo actual.
intento mirar upshot.js fuentes. han implementado este comportamiento – mironych
No hay una manera fácil de verificar porque no hay una manera fácil de saber qué constituye 'en línea'. La interfaz de red podría estar activa, el dispositivo/PC podría estar en una red, pero si esa red no tiene conexión a Internet, ¿está conectado o desconectado? Eso dependería de si la aplicación está en Internet o en la intranet. ¿Qué sucede si tiene acceso a Internet pero su aplicación está bloqueada por las reglas del firewall, su aplicación está en línea o fuera de línea? La forma más fácil de verificar * es * algún tipo de ping. – robertc
@robertc su comentario tiene mucho sentido para mí, ¡gracias! –