2010-07-19 133 views
11

我有一個使用緩存清單脫機工作的iPhone Web應用程序。我將webapp添加到我的主屏幕,使用它(例如滾動到頁面上的某個位置),然後返回到主屏幕。 當我再次打開該應用程序時,在短暫的時間內,我看到了我曾經的位置(在該頁面上的滾動位置),但隨後該應用程序「重新加載」,並且我滾動到主頁的頂部。有沒有辦法來防止這種「重新加載」?即使在飛機模式下也會發生這種情況(即,一切都在緩存中)。防止緩存的iPhone Web應用程序重新加載(滾動到頂部)

window.addEventListener( '卸載',函數(){$(」:同時發動我用這個在我的網頁

+0

這一直困擾着我的正常Safari瀏覽器應用程序,它總是試圖重新加載前一頁... – Fosco 2010-07-19 18:30:03

回答

3

你只是看到默認的開機畫面,這僅僅是一個你在最後的地方的屏幕截圖。這不是「重裝」;該應用程序沒有加載開始。

搜索「蘋果觸摸啓動圖像」來設置一個真正的加載圖像。

+0

啊,所以我忘記了我離開應用程序的狀態是錯覺?在結束之前沒有實際存儲滾動位置的機會? – 2010-12-01 17:54:37

+0

您可能可以自己將其保存到localStorage:當您登錄時,重置250毫秒計時器;當定時器到期時,保存滾動位置,也許相對於最近的錨點來說明頁面改變。在加載時恢復它。只有在window.navigator.standalone爲true時才能執行此操作。 – 2010-12-01 19:07:05

0

//負載

window.scroll(0,0); 

爲了確保沒有舊的內容顯示body')。hide();});

因此,頁面的最後狀態是空的,什麼是顯示在頁面再次打開用戶。

+1

也是一個好主意,以確保應用程序使用從緩存清單的最新文件: window.applicationCache.addEventListener( 'UPDATEREADY', 函數(){ window.applicationCache.swapCache(); window.location.reload(TRUE);} , 假 ); – Espen 2010-10-03 14:53:59

1

我不相信有真正的「刷新」事件。 onload和onunload是我們得到的。

onload處理程序啓動,就好像它是您第一次進入頁面一樣。

onunload的處理的關鍵是清理掉舊的內容。

我喜歡爲人們提供了誰是未來回到我的web應用程序替代內容。

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

讓CSS做髒工作來隱藏大部分正文並顯示備用內容。

(這個答案不依賴於jQuery的或其他框架)

2

我正在掙扎這裏是該應用程序實際上似乎「內存」中停留更長的時間,如果我使用普通的Safari瀏覽器,而不是在「蘋果移動網絡應用能力的」模式下運行。在後面的例子中,按下主頁按鈕一樣簡單,然後切換回應用程序導致重新加載。在Safari中做同樣的事情通常不會重新加載。所以我通過使用「apple-mobile-web-app-capable」更糟糕。

相關問題