[下面複製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中的調試>顯示錯誤控制檯在控制檯中查看輸出。
如果您有任何疑問,PLMK的評論。
HTH,
Ĵ
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);
您應該將chrome指向您的應用程序以查看是否收到了任何緩存錯誤。 – hvgotcodes 2010-11-20 02:31:18
@hvgotcodes我剛剛發現緩存錯誤(錯誤的文件名),如果您可以根據您的評論添加新的答案,我會接受它:-) – 2010-11-20 03:02:06
完成 - 您仍然可能希望始終在每個版本中更改您的清單名稱。否則,文件可能會更改,但名稱保持不變,並且不會更新。 – hvgotcodes 2010-11-20 03:09:21