2011-12-14 3 views
13

Czy jest jakiś sposób to zrobić?Czy istnieje sposób na odświeżenie aplikacji do gry w phonegap - np. Zbuduj stronę i zacznij od początku uruchamiać skrypty?

Np. Jeśli użytkownik uruchamia aplikację bez połączenia z Internetem, nie można załadować skryptów zdalnych, a aplikacja zasadniczo nie działa i wyświetlana jest strona "Brak internetu". Ale jeśli użytkownik dostanie się do Internetu później, a aplikacja nadal działa, czy istnieje sposób na "ponowne uruchomienie"?

Odpowiedz

16

jak o -

document.location = "index.html" 

aplikacje PhoneGap są jak osadzonym stronie - powinieneś być w stanie przejść do dowolnego hiperłącza chcesz (myśl białe listy).

Oczywiście, jeśli chcesz wykryć, kiedy jest znowu online, powinieneś użyć PhoneGap Network API, aby powiązać te zdarzenia online/offline.

Myśląc ogólniej, czy kiedykolwiek myślałeś o użyciu funkcji manifestu HTML5, aby faktycznie zezwalać lokalnej aplikacji PhoneGap na cache w zdalnych skryptach? W ten sposób aplikacja może nadal działać, nawet w trybie offline (z wyjątkiem sytuacji, w której potrzebne są zdalne dane do "zrobienia") ...

Mam nadzieję, że to pomoże!

+0

niezwykle pomocne, dzięki. Nie zastanawiałem się nad buforowaniem skryptów - czy to by było zgodne z mapą Google Maps? –

+0

głównym problemem, który mi odpowiada, są błędy przekroczenia czasu javascript. Wiem, że było dużo dyskusji, ale jasne jest, że uiwebview nie ma nitro i po prostu nie można wykonać javascriptu, tak jak robi to mobilne safari. Moja aplikacja jqm działała bezbłędnie w mobilnym safari, ale ciągle ulegała awarii w uiwebview - ale ponieważ phonegap nigdy tak naprawdę "nie uruchamia się ponownie" i błędy javascript nie powodują awarii aplikacji, po prostu przestał reagować. document.location rozwiązuje problem. –

+0

może to się nie udać, jeśli używasz routingu html5 do swojej aplikacji (ponieważ index.html może już nie być relatywny). Do rozważenia przy użyciu tego: http://stackoverflow.com/a/37837475/82609 –

1

Spróbuj

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

Działa tylko dla Androida. Ścieżki plików mogą się zmieniać. –

0

Zaakceptowany rozwiązanie działa, ale może się nie powieść, jeśli masz SPA z html5 url routingu.

Oto najbezpieczniejsze rozwiązanie:

// 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; 
} 
Powiązane problemy