Last major update on 12 June 2009.
These compatibility tables detail support for the new HTML5 functionalities in all modern browsers.
| Selector | IE 5.5 | IE 6 | IE 7 | IE8 as IE7 | IE8 as IE8 | FF 2 | FF 3.0 | FF 3.5b4 | Saf 3.0 Win | Saf 4.0 Win | Chrome 2 | Opera 9.62 | Opera 10b | Konqueror 3.5.7 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| localStorage and sessionStorage Details | No | Yes | No | Yes | No | Yes | No | No | To be tested | |||||||||||||||
| Selector | IE 5.5 | IE 6 | IE 7 | IE8 as IE7 | IE8 as IE8 | FF 2 | FF 3.0 | FF 3.5b4 | Saf 3.0 Win | Saf 4.0 Win | Chrome 2 | Opera 9.62 | Opera 10b | Konqueror 3.5.7 | ||||||||||
sessionStorage sets fields on the window. When the window is closed,
	the session fields are lost, even if the site remains open in another window.localStorage sets fields on the domain. Even when you close the
	browser, reopen it, and go back to the site, it remembers all fields in
	localStorage.Otherwise the two storage objects work exactly the same.
The storage object in the code examples below can stand for either
localStorage or sessionStorage.
| Selector | IE 5.5 | IE 6 | IE 7 | IE8 as IE7 | IE8 as IE8 | FF 2 | FF 3.0 | FF 3.5b4 | Saf 3.0 Win | Saf 4.0 Win | Chrome 2 | Opera 9.62 | Opera 10b | Konqueror 3.5.7 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| clear()Clear the entire storage | No | Yes | No | Incom | No | Yes | No | No | To be tested | |||||||||||||||
| storage.clear() Clear all values from the storage object. 
 | ||||||||||||||||||||||||
| getItem()Get a value by key | No | Yes | No | Yes | No | Yes | No | No | To be tested | |||||||||||||||
| var x = storage.getItem('ppk')Get the stored value by name. | ||||||||||||||||||||||||
| key()Retrieve keys by number | No | Yes | No | Yes | No | Yes | No | No | To be tested | |||||||||||||||
| var x = storage.key(1) 
 Entering a key that does not exist throws an error. | ||||||||||||||||||||||||
| lengthThe number of keys stored | No | Yes | No | Yes | No | Yes | No | No | To be tested | |||||||||||||||
| storage.length The number of keys stored in the storage object. | ||||||||||||||||||||||||
| removeItem()Remove a key and its value | No | Yes | No | Yes | No | Yes | No | No | To be tested | |||||||||||||||
| storage.removeItem('ppk')Remove a named item from the storage. | ||||||||||||||||||||||||
| setItem()Set a value by key | No | Yes | No | Yes | No | Yes | No | No | To be tested | |||||||||||||||
| storage.setItem('ppk','JavaScript')Set a value to a key. | ||||||||||||||||||||||||
| storage eventFires when the storage changes | No | Yes | No | Yes | No | Yes | No | No | To be tested | |||||||||||||||
| document.addEventListener('storage',handleStorage,false)This event fires on all pages that come from the same site when a local storage field is changed. If a session field is changed, it fires only in the relevant window. Thus, scripts in pages opened in other tabs or windows can also update their storage use. Safari requires you to define your event listener on the  | ||||||||||||||||||||||||
| Selector | IE 5.5 | IE 6 | IE 7 | IE8 as IE7 | IE8 as IE8 | FF 2 | FF 3.0 | FF 3.5b4 | Saf 3.0 Win | Saf 4.0 Win | Chrome 2 | Opera 9.62 | Opera 10b | Konqueror 3.5.7 | ||||||||||
| storage event - domain propertyThe domain in which this storage is active
		Mozilla proprietary | No | No | Yes | No | No | No | To be tested | |||||||||||||||||
| storageEvent.domain The domain the field is stored in. | ||||||||||||||||||||||||
| storage event - key propertyWhat’s the key of the changed field? | No | No | No | Yes | No | No | To be tested | |||||||||||||||||
| storageEvent.key The key of the changed field. | ||||||||||||||||||||||||
| storage event - newValue propertyWhat’s the new value of the changed field? | No | No | No | Yes | No | No | To be tested | |||||||||||||||||
| storageEvent.newValue The new value of the affected field. | ||||||||||||||||||||||||
| storage event - oldValue propertyWhat’s the old value of the changed field? | No | No | No | Yes | No | No | To be tested | |||||||||||||||||
| storageEvent.oldValue The old value of the affected field. Is  | ||||||||||||||||||||||||
| storage event - uri propertyWhat’s the url of the page that changed the field?
		Apple proprietary | No | No | No | Yes | No | No | To be tested | |||||||||||||||||
| storageEvent.uri The URL of the page that changed the field. | ||||||||||||||||||||||||
| storage event - url propertyWhat’s the url of the page that changed the field? | No | No | Yes | No | No | No | To be tested | |||||||||||||||||
| storageEvent.url The URL of the page that changed the field. | ||||||||||||||||||||||||
| storage event - source propertyGets the windowProxy of the window the change happened in (or something) | No | No | No | Yes | No | No | To be tested | |||||||||||||||||
| storageEvent.source The window in which the field was changed. This property is pretty interesting, because it allows you to create a connection between two totally separate windows. So far, windows could only influence each other if they knew of each other’s existence; i.e. if one window was opened by the other by means of JavaScript. With the  | ||||||||||||||||||||||||
| storage event - storageArea propertyDid the change happen in the localStorage or sessionStorage object? | No | No | No | No | No | To be tested | ||||||||||||||||||
| storageEvent.storageArea Whether a local or a session field was changed. | ||||||||||||||||||||||||
| Selector | IE 5.5 | IE 6 | IE 7 | IE8 as IE7 | IE8 as IE8 | FF 2 | FF 3.0 | FF 3.5b4 | Saf 3.0 Win | Saf 4.0 Win | Chrome 2 | Opera 9.62 | Opera 10b | Konqueror 3.5.7 | ||||||||||