Programming
Article
By Craig Buckler

How To Create an Offline Web Application

By Craig Buckler
Help us help you! You'll get a... FREE 6-Month Subscription to SitePoint Premium Plus you'll go in the draw to WIN a new Macbook SitePoint 2017 Survey Yes, let's Do this It only takes 5 min

offline web applicationThe majority of browser vendors are introducing offline web application functionality within HTML5. It allows an online application to work even if the user loses or disconnects their internet connection. For example, you would be able to compose a message in your webmail client even if you couldn’t find a wi-fi hotspot.

The example provided in this post works in Firefox 3.x. It works to some extent in other browsers — including IE8. However, implementations and feature sets differ. Offline technologies are in a state of flux, so I couldn’t recommend using this code in a production environment.

There are three aspects to creating an offline-enabled application: specifying which required files, determining when a browser goes offline, and saving data locally.

The Cache Manifest

Your browser can’t access files when it’s offline so you need to specify which resources are required so they can be cached. This is achieved in the cache manifest — it’s a simple list of essential files, e.g.


CACHE MANIFEST
styles.css
jquery-1.4.min.js
offline.js
index.html

Save this file as “offline.manifest” and link to it in your page’s html tag:


<html manifest="offline.manifest">

Note that offline.manifest should be served with a text/cache-manifest MIME-type.

When you load the file, the browser will ask whether you permit data to be stored on your PC.

How to Detect When a Browser Goes Offline

JavaScript code can detect when a browser is online or offline using navigator.onLine. This property is supported by most browsers and returns true when online or false when offline.

Firefox also allows you to attach handlers to the online and offline events of the window object, e.g.


// standard event listeners
window.addEventListener("online", function() { ... });
window.addEventListener("offline", function() { ... });

// or jQuery alternative
$(window).bind("online offline", function() { ... });

Saving Data Locally

DOM storage is one of the simplest methods of saving data when offline. You can use either:

  • window.sessionStorage to retain values for the duration of the session, or
  • window.localStorage to retain values for longer periods.

Both objects offer the same methods:

  • setItem(string name, string value): add or update a value in the store
  • getItem(string name): get a named value from the store
  • removeItem(string name): remove a named value from the store
  • length: number of values stored
  • key(long index): name of the key at the index
  • clear(): clear the store

Example:


// set a session value
window.sessionStorage.setItem("key", "my data");

// get a session value - returns "my data"
window.sessionStorage.getItem("key");

Putting it all Together

View the example page…

It’s not very interesting until you select File > Work Offline in Firefox. The status will immediately change to “OFFLINE”. You can then enter some data and click the “Save Data” button. The data will be stored locally rather than being posted to the server. Refresh the page and the values you entered will reappear.

Please download the files if you would like to take a closer look at the code.

Login or Create Account to Comment
Login Create Account
Recommended
Sponsors
Get the most important and interesting stories in tech. Straight to your inbox, daily.Is it good?