Изучаем HTML 5-Б. Лоусон, Р. Шарп - 2011 |
Страница 159 из 244 Одна из важнейших задач, которую приходится решать разработчикам приложений — идет ли речь о веб-приложениях или приложениях для настольной системы, — это хранение данных. Запись уникальных ключей, определяющих способ отображения страниц, сохранение имен пользователей, индивидуальных настроек, — список можно продолжать бесконечно. Прежде, для того чтобы запомнить данные веб-приложения, разработчикам приходилось либо дробить их, сохраняя часть на сервере и создавая некое связующее звено между клиентом и сервером, либо использовать файлы cookie. Файлы cookie — это кошмар и ужас. Нет, само слово переводится прекрасно, печенье любят все. И все же, оно должно быть на столе, а не в браузере. С файлами cookie связано множество проблем, превращающих работу с ними в сплошную головную боль. Приступая к новому проекту, в котором будут использоваться файлы cookie, первым делом я отправляюсь на поиски библиотеки JavaScript, предназначенной специально для таких приложений. Если мне не удается найти ее, то я обращаюсь за помощью к Google и копирую нужные фрагменты из кода, написанного Питером-Полом Кохом. ПРИМЕЧАНИЕ Код Питера-Пола Коха для приложений, использующих файлы cookie, можно загрузить с сайта http://www.quirksmode.org/js/ cookies.html. Программная реализация файлов cookie чрезмерно усложнена. Только взгляните:создание файла cookie на JavaScript выглядит примерно так: document.cookie = "foo=bar; path=/"; Это сеансовый файл cookie. Если же вы не хотите, чтобы данные стерлись в момент окончания сеанса, то при создании файла нужно указать для него срок жизни (чтобы подарить файлу cookie бессмертие, придется периодически прибавлять ему п дней жизни): document.cookie = "foo=bar; path=/; expires=Tues, 13 Sept 2010 12:00:00"; Формат времени исключительно важен — вы уже поняли, что это еще один источник головной боли? А теперь покроем наши черствые печенюшки прокисшей глазурью:удалить файл cookie можно, только присвоив ему пустое значение: document.cookie = ,rfoo=; path=/"; |