为什么离线 Web 应用程序不起作用?



看起来大多数浏览器都支持离线应用。我从WHATWG复制了示例应用程序,并将其放在web服务器上,但当我使用以下步骤进行测试时,它没有工作:

  1. 在windows phone 8.1 (IE 11)下浏览到clock.html
  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';
}

我已经构建了一个离线应用程序,使用这种技术,在每个浏览器中都能很好地工作,但是我在Windows Phone 8.1的IE11上也遇到了同样的问题。我在这里写了这个问题:http://forums.wpcentral.com/windows-phone-8-1-preview-developers/274574-91.htm#post2585711

如果你加载页面,进入飞行模式,然后点击刷新,你会收到提到的DNS错误(当你期望浏览器从缓存加载页面时)。

我找到了一个解决方法——加载页面,添加书签(如果你想的话,还可以把它固定在主页上),退出浏览器,进入飞行模式,然后重新打开浏览器,只使用书签加载页面。它应该可以加载站点。只是不要点击刷新——刷新功能似乎杀死了它。

时钟。apache需要使用正确的mime类型text/cache-manifest。大多数服务器在默认情况下不会这样做。你需要修改网页。用正确的设置配置或。htaccess。

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

Apache https://stackoverflow.com/a/3281574/195050

相关内容

  • 没有找到相关文章

最新更新