2010-07-19 10 views
11

Ho una webapp per iPhone che utilizza un manifest della cache per funzionare offline. Aggiungo la webapp alla schermata iniziale, la uso (ad esempio, scorri fino a una determinata posizione in una pagina), quindi torno alla schermata iniziale. Quando apro di nuovo l'app, per un breve momento vedo dove ero (nella posizione in cui scorreva quella pagina), ma poi l'app si "ricarica" ​​e scendo verso la parte superiore della pagina principale. C'è un modo per evitare questo "ricaricare"? Questo accade anche in modalità aereo (cioè tutto funziona fuori dalla cache).Impedisci la webapp dell'iPhone memorizzata nella cache da ricaricare (scorrendo verso l'alto)

+0

Questo mi ha sempre infastidito nel normale Safari app, cerca sempre di ricaricare la pagina precedente ... – Fosco

risposta

3

Stai solo vedendo l'immagine di avvio di default, che è solo uno screenshot del l'ultimo posto foste a. Non è "ricarico"; l'app non è stata caricata per cominciare.

Cercare "apple-touch-startup-image" per impostare un'immagine di caricamento reale.

+0

Ah, quindi è un'illusione che lo stato in cui ho lasciato l'app sia stato ricordato? Non è possibile archiviare la posizione dello scroll prima della chiusura? –

+0

Potrebbe essere possibile salvarlo su localStorage da solo: quando si ottiene onscroll, reimpostare un timer da 250ms; quando il timer scade, salva la posizione di scorrimento, forse in relazione all'ancora più vicina per tenere conto della modifica della pagina. Ripristinalo a caricamento. Fanno tutto ciò quando window.navigator.standalone è vero. –

0

// sul carico

window.scroll(0,0); 

per garantire l'assenza vecchio contenuto viene visualizzato mentre il lancio Io uso questo nella mia pagina:

window.addEventListener ('scarico', function() {$ (' corpo '). hide();});

Quindi l'ultimo stato della pagina è vuoto ed è ciò che viene mostrato all'utente quando la pagina viene riaperta.

+1

anche una buona idea per garantire l'applicazione utilizza i più recenti file dalla cache manifest: window.applicationCache.addEventListener ( 'updateready', function() { window.applicationCache.swapCache(); window.location.reload (true);} , falsa ); – Espen

1

Non credo ci sia un vero evento di "ricarica". onload e onunload sono tutto ciò che otteniamo.

il onload il gestore si avvia come se fosse la prima volta che si visita la pagina.

il onunload gestore è la chiave per eliminare vecchi contenuti.

Mi piace fornire contenuti alternativi per le persone che stanno tornando alla mia app Web.

window.onunload=function(){ 
    document.getElementsByTagName('body')[0].className+=' unloading' 
} 

E lasciare che il CSS faccia il lavoro sporco per nascondere la maggior parte del corpo e mostrare contenuti alternativi.

(questa risposta non si basa su jQuery o di altre misure)

2

Quello con cui sto combattendo qui è che l'app in realtà sembra rimanere "in memoria" più a lungo se utilizzo Safari regolare anziché funzionare in modalità "compatibile con Apple Web Mobile App". Nel caso successivo, qualcosa di semplice come premere il pulsante Home, quindi il passaggio all'app, l'operazione ricomincia da capo. Fare spesso la stessa cosa solo in Safari non viene ricaricato. Quindi sto peggio usando "apple-mobile-web-app-capable".

Problemi correlati