Last active
August 29, 2015 14:15
-
-
Save ronlobo/e0beeeb0d3ebf15c97c6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Convenience array of status values | |
var cacheStatusValues = []; | |
cacheStatusValues[0] = 'uncached'; | |
cacheStatusValues[1] = 'idle'; | |
cacheStatusValues[2] = 'checking'; | |
cacheStatusValues[3] = 'downloading'; | |
cacheStatusValues[4] = 'updateready'; | |
cacheStatusValues[5] = 'obsolete'; | |
// Listeners for all possible events | |
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); | |
// Log every event to the console | |
function logEvent(e) { | |
var online, status, type, message; | |
online = (isOnline()) ? 'yes' : 'no'; | |
status = cacheStatusValues[cache.status]; | |
type = e.type; | |
message = 'online: ' + online; | |
message += ', event: ' + type; | |
message += ', status: ' + status; | |
if (type === 'error' && navigator.onLine) { | |
message += ' There was an unknown error, check your Cache Manifest.'; | |
} | |
log('' + message); | |
} | |
function log(s) { | |
console.log(s); | |
} | |
function isOnline() { | |
return navigator.onLine; | |
} | |
if (!jQuery('html').attr('manifest')) { | |
log('No Cache Manifest listed on the tag.'); | |
} | |
// Swap in newly download files when update is ready | |
cache.addEventListener('updateready', function (e) { | |
// Don't perform "swap" if this is the first cache | |
if (cacheStatusValues[cache.status] !== 'idle') { | |
cache.swapCache(); | |
log('Swapped/updated the Cache Manifest.'); | |
} | |
} | |
, false); | |
// These two functions check for updates to the manifest file | |
function checkForUpdates() { | |
cache.update(); | |
} | |
function autoCheckForUpdates() { | |
setInterval(function () { | |
cache.update(); | |
}, 10000); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment