Firefox (Gecko). Стандарт HTML 5.
Firefox реализует стандарт хранения "Client-side session and persistent storage of name/value pairs", предложенный в спецификации HTML 5.
Для постоянного хранения данных в нем используется объект window.globalStorage[домен], операции над которым можно производить точно так же, как над обычным javascript-объектом. При уходе с сайта и даже закрытии браузера globalStorage не меняется, так что все его свойства можно прочитать обратно.
Например:
storage = globalStorage[document.domain]
// записать значение
storage['userName'] = 'Vasya'
// прочитать значение
alert(storage['userName'])
// удалить значение
delete storage['userName']
// получить все значения
for(var name in storage) {
alert(name + ':' + storage[name])
}
При чтении/записи на элементе body инициируется всплывающее событие storage.
Поймать его можно, например, таким обработчиком:
window.addEventListener('storage', function(event) { ... })
Стандарт HTML 5 все еще в процессе развития. В старой редакции прочитанные значения имели тип StorageItem.
Версия Firefox 2.0.0.13 возвращает при чтении объект именно этого типа.
Из текущей редакции StorageItem убран. В ней возвращаемые хранилищем значения имеют более простой тип DOMString.
..А пока эти изменения не учтены разработчиками, рекомендуется преобразовать значения к String явным образом.
Например:
var test = "12345"
storage.test = test // сохранить -> String
test = storage.test // прочитать <- StorageItem
alert(test.length) // undefined, это же не строка
alert(test.constructor) // StorageItem
test = String(test) // сделали строку. Теперь все ок.