Skip to content

Instantly share code, notes, and snippets.

@sporkmonger
Created April 27, 2011 10:44
Show Gist options
  • Save sporkmonger/944048 to your computer and use it in GitHub Desktop.
Save sporkmonger/944048 to your computer and use it in GitHub Desktop.
Offline Application Cache Debugging
// Adapted from a snippet by Jonathan Stark
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;
// This check might be confusing on Chrome, where
// navigator.onLine tends to always evaluate true
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+= ' (check manifest syntax)';
}
console.log(message);
}
window.applicationCache.addEventListener('updateready', function() {
window.applicationCache.swapCache();
console.log('swap cache has been called');
}, false);
setInterval(function() {
cache.update();
}, 10000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment