2010-07-19 8 views
11

Ich habe eine iPhone-Webanwendung, die ein Cache-Manifest verwendet, um offline zu arbeiten. Ich füge die Webanwendung meinem Startbildschirm hinzu, verwende sie (z. B. scrolle zu einem bestimmten Ort auf einer Seite) und gehe dann zurück zum Startbildschirm. Wenn ich die App erneut öffne, sehe ich für einen kurzen Moment, wo ich war (an dem gescrollten Ort auf dieser Seite), aber dann "lädt" die App und ich scrollte zum Anfang der Hauptseite. Gibt es eine Möglichkeit, dieses "Nachladen" zu verhindern? Dies geschieht sogar im Flugzeugmodus (dh alles läuft vom Cache ab).Verhindern, dass die zwischengespeicherte iPhone-Webanwendung neu geladen wird (scrollen nach oben)

+0

Dies störte mich immer in der normalen Safari App, versucht es immer die vorherige Seite neu zu laden ... – Fosco

Antwort

3

Sie sind nur das Standard-Startbild zu sehen, das ist nur ein Screenshot von der letzten Stelle ist man ihnen waren. Es wird nicht "neu geladen"; Die App wurde nicht geladen.

Suchen Sie nach "apple-touch-startup-image", um ein echtes Ladebild festzulegen.

+0

Ah, also ist es eine Illusion, dass der Zustand, in dem ich die App verlassen habe, in Erinnerung geblieben ist? Keine Möglichkeit, den Scroll-Speicherort vor dem Schließen zu speichern? –

+0

Sie können es möglicherweise in localStorage speichern: Wenn Sie onscroll erhalten, setzen Sie einen 250ms-Timer zurück; Wenn der Timer abgelaufen ist, speichern Sie die Bildlaufposition, möglicherweise relativ zum nächsten Anker, um die Seitenänderung zu berücksichtigen. Stellen Sie es beim Laden wieder her. Tun Sie das alles nur, wenn window.navigator.standalone wahr ist. –

0

// auf Last

window.scroll(0,0); 

Um keine alten Inhalte sicherzustellen, wird angezeigt beim Starten ich diese verwende in meiner Seite:

window.addEventListener ('Entladen', function() {$ (‘ Körper '). hide();});

Somit ist der letzte Zustand der Seite leer und wird dem Benutzer angezeigt, wenn die Seite wieder geöffnet wird.

+1

auch eine gute Idee, die App ist mit den neuesten Dateien aus dem Cache Manifest zu gewährleisten: window.applicationCache.addEventListener ( 'updateready', Funktion() { window.applicationCache.swapCache(); window.location.reload (true); }, falsche ); – Espen

1

Ich glaube nicht, dass es ein echtes 'reload' Ereignis gibt. onload und onunload sind alles was wir bekommen.

Die onload Handler startet, als ob Sie das erste Mal auf die Seite kommen.

die onunload Handler ist der Schlüssel zum Löschen alter Inhalte.

Ich stelle gerne alternative Inhalte für Leute bereit, die zu meiner Web-App zurückkehren.

Und lassen Sie die CSS die schmutzige Arbeit tun, um den größten Teil des Körpers zu verbergen und alternativen Inhalt anzuzeigen.

(diese Antwort beruht nicht auf jQuery oder andere Frameworks)

2

Womit ich hier zu kämpfen habe ist, dass die App tatsächlich länger im Speicher zu bleiben scheint, wenn ich normalen Safari statt im Modus "Apple-Mobile-Web-App-fähig" benutze. Im letzteren Fall etwas so einfaches wie Drücken der Home-Taste, dann Task-Wechsel zurück zur App verursacht ein Nachladen. Das gleiche zu tun, nur in Safari wird oft nicht neu geladen. Mir geht es also schlechter, wenn ich "apple-mobile-web-app-fähig" benutze.

Verwandte Themen