Особенности Local storage:
- Большой объем хранилища (ограничивается только настройками браузера и свободным местом на жестком диске)
- Данные хранятся на стороне клиента (высокая производительность)
- Неограниченное время жизни
Поддержка браузеров, на самом деле, довольно хорошая:
- IE 8+
- Firefox 3.5+
- Safari 4+
- Chrome 4+
- Opera 10.5+
- iPhone 2+
- Android 2+
LocalStorage API очень прост в использовании. Работа происходит через обращение к объекту window.localStorage.
function isLocalStorageAvailable()
{
try {
return 'localStorage' in window && window['localStorage'] !== null;
} catch (e) {
return false;
}
}
Сохранение данных.
localStorage.setItem('foo', 'bar');
Извлечение данных.
var foo = localStorage.getItem('foo');
console.log(foo); //bar
Можно использовать квадратные скобки для сохранения и извлечения данных.
localStorage['foo'] = 'bar';
var foo = localStorage['foo'];
console.log(foo); //bar
Удаление данных.
localStorage.removeItem('foo'); //удалит элемент по ключу
localStorage.clear(); //удалит все элементы
При записи данных в заполненное хранилище вы получите ошибку QUOTA_EXCEEDED_ERR.
try {
localStorage.setItem('foo', 'bar');
} catch (e) {
if (e == QUOTA_EXCEEDED_ERR) {
alert('Локальное хранилище переполнено');
}
}
Стоит отметить, что сохранять можно только строковые данные. Для нестроковых данных перед записью следует воспользоваться сериализацией.
var foo = {1: [1, 2, 3]};
localStorage.setItem('foo', JSON.stringify(foo));
var fooFromLS = JSON.parse(localStorage.getItem('foo'));
А есть ли какая-то стандартная возможность хранить данные, не привязываясь к конкретному браузеру, только к компьютеру? Например, запустил человек некий сайт в Фаерфоксе, у него где-то сохранилась пара key1=value1. Потом открывает тот же сайт, но уже Хромом. И Хром извлекает данные, что у key1 значение value1, хотя изначально записаны они были из Фаерфокса.
Илья, стандартной нету. Должно быть что-то общее для всех клиентов (браузеров). Этим общим может быть сервер.