2014-05-15 86 views
1

大多數瀏覽器都支持offline app。 我從WHATWG複製示例應用程序,並把它放在一個Web服務器上,但是當我用下面的步驟來測試它不工作:爲什麼離線的web應用程序不起作用?

  1. 瀏覽隨着Windows Phone 8.1 clock.html(IE 11)
  2. 頁面看起來不錯,然後再次
  3. 禁用WiFi和小區數據退出瀏覽器
  4. 瀏覽到clock.html但得到Cannot find server or DNS error

我不是在私人瀏覽模式並沒有清除任何瀏覽器緩存。我不知道這是否是特定於Windows Phone的,但稍後會用其他設備進行測試。

clock.appcache

CACHE MANIFEST 
CACHE: 
clock.html 
clock.css 
clock.js 

clock.html

<!DOCTYPE html> 
<html manifest="clock.appcache"> 
<head> 
    <title>Clock</title> 
    <script src="clock.js"></script> 
    <link rel="stylesheet" href="clock.css"> 
</head> 

<body onload="updateIndicator()" ononline="updateIndicator()" onoffline="updateIndicator()"> 
    <div>The network is: <span id="indicator">(state unknown)</span></div> 
    <div>The time is: <span id="clock"></span></div> 
</body> 

</html> 

clock.css

.clock { font: 2em sans-serif; } 

clock.js

setInterval(function() { 
    document.getElementById('clock').innerHTML = new Date(); 
}, 1000); 

function updateIndicator() { 
    document.getElementById('indicator').innerHTML = navigator.onLine ? 'online' : 'offline'; 
} 

回答

1

clock.appcache需要提供正確的MIME類型text/cache-manifest。大多數服務器默認情況下不會這樣做。您需要使用正確的設置修改web.config或.htaccess。

IIS https://stackoverflow.com/a/7118481/195050

阿帕奇https://stackoverflow.com/a/3281574/195050

+0

脫機時,刷新頁面會再次出現相同的錯誤。任何想法如何解決? –

+0

@RayCheng它可能是緩存標題。 'no-store'會導致問題。其他人喜歡「私人」可能,但我不確定。如果文件需要身份驗證才能訪問或由代碼生成,則有時會自動設置這些頭文件。 – Nicholas

2

我已經建立了使用這種技術,並在每個瀏覽器的工作原理以及離線應用程序,不過我也經歷過在Windows Phone 8.1同樣的問題,你在IE11過。我在這裏寫了關於這個問題:http://forums.wpcentral.com/windows-phone-8-1-preview-developers/274574-91.htm#post2585711

看來,如果你加載頁面,進入飛行模式,然後點擊刷新,你會收到DNS錯誤提到(當你希望瀏覽器從緩存中加載頁面)。

我找到了一種解決方法 - 加載頁面,將其加入書籤(如果需要,將其加入書籤),退出瀏覽器,進入飛行模式,然後重新打開瀏覽器並加載頁面只使用您的書籤。它應該加載站點確定。只是不要刷新 - 它似乎是殺死它的刷新功能。

+1

解決方法不起作用。只要我在離線狀態下不刷新,即使在離線刷新後從書籤加載,也不會再工作。 –

+0

我想你已經描述了和我一樣的過程 - 基本上它使用刷新似乎打破它。 –

相關問題