[[在下面复制my answer from here,因为它可能适用于:]]
我发现调试 HTML5 离线应用程序很痛苦。我发现这篇文章中的代码帮助我找出了我的应用出了什么问题:
http://jonathanstark.com/blog/2009/09/27/debugging-html-5-offline-application-cache/
调试 HTML 5 离线应用缓存
乔纳森·斯塔克
如果您希望提供对 Web 应用程序的离线访问,HTML5 中可用的离线应用程序缓存是杀手锏。但是,它是一个需要调试的巨型 PITA,尤其是当您仍在努力解决它时。
如果您在处理缓存清单时遇到困难,请将以下 JavaScript 添加到您的主 HTML 页面,并使用 Firefox 中的 Firebug 或 Safari 中的 Debug > Show Error Console 在控制台中查看输出。
如果您有任何问题,请在 cmets 中 PLMK。
HTH,
j
var cacheStatusValues = [];
cacheStatusValues[0] = 'uncached';
cacheStatusValues[1] = 'idle';
cacheStatusValues[2] = 'checking';
cacheStatusValues[3] = 'downloading';
cacheStatusValues[4] = 'updateready';
cacheStatusValues[5] = 'obsolete';
var cache = window.applicationCache;
cache.addEventListener('cached', logEvent, false);
cache.addEventListener('checking', logEvent, false);
cache.addEventListener('downloading', logEvent, false);
cache.addEventListener('error', logEvent, false);
cache.addEventListener('noupdate', logEvent, false);
cache.addEventListener('obsolete', logEvent, false);
cache.addEventListener('progress', logEvent, false);
cache.addEventListener('updateready', logEvent, false);
function logEvent(e) {
var online, status, type, message;
online = (navigator.onLine) ? 'yes' : 'no';
status = cacheStatusValues[cache.status];
type = e.type;
message = 'online: ' + online;
message+= ', event: ' + type;
message+= ', status: ' + status;
if (type == 'error' && navigator.onLine) {
message+= ' (prolly a syntax error in manifest)';
}
console.log(message);
}
window.applicationCache.addEventListener(
'updateready',
function(){
window.applicationCache.swapCache();
console.log('swap cache has been called');
},
false
);
setInterval(function(){cache.update()}, 10000);