Local Storage: как запомнить выбор пользователя
При конструировании этого сайта возникла задача: как при навигации по его страницам запомнить выбор, который сделал посетитель вначале?
Я имею ввиду планку с тремя кнопками: «Вы — Заказчик / Коллега / Всё-равно».
Одним из изящных и простых способов является хранение выбора пользователя в Local Storage. Это такое место в браузере, где он может хранить разную информацию (только в виде строк (string) и размером до 5 мегабайт (по данным на начало 2011)). Данные в Local Storage хранятся в виде пар «ключ — значение».
Теперь, как с ними работать. Всё просто. Значения задаются следующим образом: localStorage["ключ"] = значение. Например, на этом сайте я работаю с jQuery и передавал значения в Local Storage так:
$("#client").bind("click", {choose:"yes"}, function(e){
localStorage["client"] = e.data.choose;localStorage["master"] = "now";localStorage["all"] = "now";
});
Здесь при клике на кнопку с id = «client» под ключ с именем «client» передаётся значение аргумента «choose», а под ключи со значениями «master» и «all» передаются значения «now».
Всё, ключ и его значения в памяти браузера. Что важно, браузер не обращается к серверу, все данные содержаться в клиентском компьютере. Мало того, при закрытии браузера они сохраняются, и пользователь откроет нашу страницу как бы с «закладки» — с теми параметрами, которые сохранились в предыдущей сессии.
Теперь в нужный момент нам требуется извлечь значение, чтобы выдавать нужные куски кода в зависимости от того, куда кликнул посетитель на начальной странице. Делается это так:
var client_selected = localStorage["client"];
if (client_selected == "yes"){
$("#dock_all_1 a").hide();
................
$(".app").hide();
$(".util").show();
В локальную переменную записываем значение из Local Storage и далее работаем с этой переменной.
Более подробно почитать советую здесь: http://htmlbook.ru/html5/storage
Ещё люди придумали плагин
http://www.jstorage.info
Альтернатива этому методу — запись параметров в cookies. Если вдруг захочется повозиться с ними, вот здесь наглядный пример: http://www.linkexchanger.su/2008/42.html
Local Storage поддерживается всеми современными браузерами:
IE 8.0+, FF 3.5+, Opera 10.5+, Chrome 4.0+, Safari 4.0+, Safari for iPhone 2.0+, Android 2.0+.
К сожалению, Opera Mobile поддерживать отказывается: http://my.opera.com/ODIN/blog/2010/03/16/opera-standards-chart
Update. Для сохранения данных только в течение одной сессии работы с сайтом вместо localStorage используем sessionStorage.
ps. Альтернатива - работать с сookies.