看起来大多数浏览器都支持离线应用。我从WHATWG复制了示例应用程序,并将其放在web服务器上,但当我使用以下步骤进行测试时,它没有工作:
- 在windows phone 8.1 (IE 11)下浏览到clock.html
- 页面看起来很好,然后退出浏览器
- 禁用wifi和手机数据
- 再次浏览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。