Сейчас мы с вами разберемся со специальным
объектом localStorage
, позволяющим
хранить данные между заходами пользователя
на ваш сайт (5
-10
мегабайт
информации). Данные хранятся в специальном
месте браузера под названием локальное
хранилище
.
Доступ к данным производится по ключу: вы сохраняете данные с каким-то ключом, а затем можете получить их по этому ключу или удалить. При этом разрешено сохранять только строки. Для работы с данными есть специальные методы. Давайте их рассмотрим.
Сохранение и получение данных
Метод setItem
предназначен для сохранения
данных. Первым параметром он принимает ключ,
а вторым - значение. Метод getItem
предназначен для получения данных. Он принимает
один параметр - ключ, под которым эти данные
были сохранены.
Давайте попробуем эти методы на практике. Для начала давайте сохраним какую-нибудь строку с каким-нибудь ключом:
localStorage.setItem('key', 'hello'); // сохраняем с ключом 'key'
Скопируйте приведенный код и запустите его.
В результате строка 'hello'
сохранится
с ключом 'key'
.
Давайте теперь получим нашу строку из локального хранилища:
let str = localStorage.getItem('key'); // получаем данные по ключу
console.log(str); // выведет 'hello'
Напишите скрипт, который сохранит в локальном хранилище три числа под тремя разными ключами. Запустите этот скрипт, чтобы данные сохранились. Затем напишите скрипт, который получит ваши три числа из локального хранилища и найдет их сумму. Запустите второй скрипт и убедитесь в его работоспособности.
Однократное сохранение
Если попытаться прочитать ключ, для которого
не были записаны данные, то результатом будет
null
. Это можно использовать для того,
чтобы выполнить однократное сохранение данных.
К примеру, давайте запишем в локальное хранилище момент первого захода пользователя на сайт. А если пользователь зайдет не первый раз, то ничего делать не будем:
let time = localStorage.getItem('time');
if (time === null) {
let now = ( new Date() ).getTime();
localStorage.setItem('time', now);
}
Перепишем условие в более коротком виде:
let time = localStorage.getItem('time');
if (!time) {
let now = ( new Date() ).getTime();
localStorage.setItem('time', now);
}
По заходу пользователя на сайт запишите в локальное хранилище текущий момент времени. Затем по повторному заходу выведите, сколько прошло времени с предыдущего захода пользователя на сайт.
По заходу пользователя на сайт спросите у него дату рождения. При следующем заходе пользователя на сайт, если у него в этот день будет День Рождения - поздравьте его с этим праздником.
Дан инпут. По потери фокуса в этом инпуте сохраните его значение в локальное хранилище. При следующем заходе пользователя на страницу установите в инпуте сохраненный ранее текст.
Перезапись данных
Можно перезаписывать данные, хранящиеся под определенным ключом, смотрите пример:
localStorage.setItem('key', 1);
let value = localStorage.getItem('key');
console.log(value); // выведет 1
localStorage.setItem('key', 2);
let value = localStorage.getItem('key');
console.log(value); // выведет 2
localStorage.setItem('key', 3);
let value = localStorage.getItem('key');
console.log(value); // выведет 3
Пользователь заходит на сайт, затем обновляет страницу, затем еще раз обновляет и так далее. Сделайте счетчик обновления страницы. Каждый раз при обновлении выводите значение счетчика на экран.
Удаление данных
С помощью метода removeItem
можно
удалять данные и связанный с ними ключ. Смотрите
пример:
localStorage.removeItem('key');
let value = localStorage.getItem('key');
console.log(value); // выведет null
Модифицируйте предыдущую задачу. Сделайте
так, чтобы счетчик обнулялся после того,
как дойдет до 100
.
Удаление всех данных
С помощью метода clear
можно очистить
все хранилище. Смотрите пример:
localStorage.clear();
Очистите хранилище. Проверьте, что все ранее установленные вами ключи пропали.