diff options
author | Alib <aliboba@free.fr> | 2010-03-23 11:36:08 +0100 |
---|---|---|
committer | Alib <aliboba@free.fr> | 2010-03-23 11:36:08 +0100 |
commit | ce0fc110e6285d56200c9dc25375ebcc32ded8bd (patch) | |
tree | 6f329006f90dca9fdf16b1746a503cbbb91d0f72 /js/jqt.offline.js | |
parent | 6e22fcf1e3bea39806291e70361bf4ddfdb0d40e (diff) | |
download | istreamdev-ce0fc110e6285d56200c9dc25375ebcc32ded8bd.tar.gz istreamdev-ce0fc110e6285d56200c9dc25375ebcc32ded8bd.tar.bz2 |
added missing file in git
Diffstat (limited to 'js/jqt.offline.js')
-rw-r--r-- | js/jqt.offline.js | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/js/jqt.offline.js b/js/jqt.offline.js new file mode 100644 index 0000000..b333a16 --- /dev/null +++ b/js/jqt.offline.js @@ -0,0 +1,97 @@ +/* + + _/ _/_/ _/_/_/_/_/ _/ + _/ _/ _/ _/_/ _/ _/ _/_/_/ _/_/_/ + _/ _/ _/_/ _/ _/ _/ _/ _/ _/ _/ _/ + _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ + _/ _/_/ _/ _/ _/_/ _/_/_/ _/_/_/ _/ _/ + _/ + _/ + + Created by David Kaneda <http://www.davidkaneda.com> + Documentation and issue tracking on Google Code <http://code.google.com/p/jqtouch/> + + Special thanks to Jonathan Stark <http://jonathanstark.com/> + + Lots of this code is specifically derived from Jonathan's book, + "Building iPhone Apps with HTML, CSS, and JavaScript" + + (c) 2009 by jQTouch project members. + See LICENSE.txt for license. + +*/ + +(function($) { + if ($.jQTouch) + { + $.jQTouch.addExtension(function Offline(){ + + // 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.'; + } + console.log(message); + } + + function isOnline() { + return navigator.onLine; + } + + if (!$('html').attr('manifest')) { + console.log('No Cache Manifest listed on the <html> 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(); + console.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); + } + + return { + isOnline: isOnline, + checkForUpdates: checkForUpdates, + autoCheckForUpdates: autoCheckForUpdates + } + }); + } +})(jQuery);
\ No newline at end of file |