2011-12-14 28 views
13

¿Hay alguna manera de hacer esto?¿Hay alguna manera de actualizar la aplicación de su teléfono, por ejemplo, crear la página y comenzar a ejecutar los scripts desde el principio?

Por ejemplo, si un usuario inicia la aplicación sin conexión a Internet, no se pueden cargar scripts remotos, y la aplicación, básicamente, no se puede ejecutar y mostrar una página "Sin Internet". Pero si el usuario se conecta a Internet más tarde y la aplicación aún se está ejecutando, ¿hay alguna manera de simplemente "reiniciar"?

Respuesta

16

¿qué tal -

document.location = "index.html" 

aplicaciones PhoneGap son igual que un sitio web incorporado - usted debe ser capaz de ir a cualquier hipervínculo que desea (la mente las listas blancas).

Por supuesto, si también quiere detectar cuándo está nuevamente en línea, debe usar la API de red PhoneGap para enlazar a esos eventos en línea/fuera de línea.

En general, ¿alguna vez ha pensado en utilizar la funcionalidad de manifiesto HTML5 para permitir realmente que su aplicación PhoneGap local almacene en caché esos scripts remotos? De esa forma, su aplicación podría seguir ejecutándose, incluso sin conexión (excepto si necesita datos remotos para "hacer lo suyo") ...

Espero que esto ayude!

+0

enormemente útil, gracias. No he considerado el almacenamiento en caché de las secuencias de comandos, ¿funcionaría eso con la API de google api? –

+0

el principal problema que esto aclara para mí son los errores de tiempo de espera de JavaScript. Sé que ha habido mucho debate, pero está claro que uiwebview no tiene nitro y simplemente no puede ejecutar javascript como lo hace el safari móvil. mi aplicación jqm funcionó a la perfección en safari móvil, pero siguió fallando en una página web, pero como la función phonegap nunca "se reinicia" y los errores de javascript no hacen que la aplicación se cuelgue, simplemente deja de responder. document.location hace el truco para arreglar cosas. –

+0

esto podría fallar si usa el enrutamiento url html5 para su aplicación (ya que el index.html podría no ser relativo). Para eso, considere usar esto: http://stackoverflow.com/a/37837475/82609 –

1

Pruebe esta solución Aceptado

navigator.app.loadUrl("file:///android_asset/www/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000}); 
+0

Solo funciona para Android. Las rutas de archivos pueden cambiar. –

0

funciona, pero puede fallar si usted tiene un SPA con el enrutamiento html5 url.

Aquí hay una solución más segura:

// keep startup url (in case your app is an SPA with html5 url routing) 
var initialHref = window.location.href; 

function restartApplication() { 
    // Show splash screen (useful if your app takes time to load) 
    navigator.splashscreen.show(); 
    // Reload original app url (ie your index.html file) 
    window.location = initialHref; 
} 
Cuestiones relacionadas