JavaScript. Подробное руководство, 6-е издание, стр. 336
20.2.2. Сохранение cookies
Чтобы связать временное значение cookie с текущим документом, достаточно присвоить его свойству
<b>cookie</b><b>имя=значение</b>Например:
<b>document.cookie = "version=" + encodeURIComponent(document.lastModified);</b>При следующем чтении свойства
<b>cookie</b><b>encodeURIComponent().</b><b>decodeURIComponent().</b>Записанный таким способом cookie сохраняется в течение сеанса работы веб-броузера, но теряется при его закрытии пользователем. Чтобы создать cookie, сохраняющийся между сеансами броузера, необходимо указать срок его хранения (в секундах) с помощью атрибута
<b>max-age</b><b>имя=значение; max-аgе=число_ секунд</b>Следующая функция устанавливает cookie с дополнительным атрибутом
<b>max-аgе</b><b>// Сохраняет пару имя/значение в виде cookie, кодируя значение с помощью </b><b>// encodeURIComponent(), чтобы экранировать точки с запятой, запятые и пробелы.</b><b>// Если в параметре daysToLive передается число, атрибут max-age </b><b>// устанавливается так, что срок хранения cookie истекает через </b><b>// указанное число дней. Если передать значение 0, cookie будет удален, </b><b>function setCookie(name, value, daysToLive) {</b><b> var cookie = name + "=" + encodeURIComponent(value); </b><b> if (typeof daysToLive === "number")</b><b> cookie += max-age=" + (daysToLive*60*60*24);</b><b> document.cookie = cookie;</b><b>}</b>Аналогичным образом можно установить атрибуты path, domain и secure, дописав к значению cookie строки следующего формата перед его записью в свойство cookie:
<b>; path=путь</b><b>; domain=домен </b><b>; secure</b>Чтобы изменить значение cookie, установите его значение снова, указав то же имя, путь, домен и новое значение. При изменении значения cookie можно также переопределить срок его хранения, указав новое значение в атрибуте
<b>max-age</b>Чтобы удалить cookie, установите его снова, указав то же имя, путь, домен и любое произвольное (возможно пустое) значение, а в атрибут
<b>max-age</b>20.2.3. Чтение cookies
Когда свойство
<b>cookie</b><b>document.cookie</b><b>split(),</b>После извлечения значения cookie из свойства
<b>cookie</b><b>decodeURIComponent(),</b><b>JSON.parse().</b>В примере 20.1 определяется функция
<b>getCookie(),</b><b>document.cookie</b>Пример 20.1. Анализ свойства <b>document.cookie</b>
<b>// Возвращает cookies документа в виде объекта с парами имя/значение.</b><b>// Предполагается, что значения cookie кодируются с помощью</b><b>// функции encodeURIComponent().</b><b>function getCookies() {</b><b> var cookies = {}; // Возвращаемый объект</b><b> var all = document.cookie; // Получить все cookies в одной строке</b><b> if (all === "") // Если получена пустая строка,</b><b> return cookies; // вернуть пустой объект</b><b> var list = all.split("; "); // Разбить на пары имя/значение</b><b> for(var і = 0; і < list.length; i++) { // Для каждого cookie</b><b> var cookie = list[і];</b><b> var p = cookie.indexOf(”="); // Отыскать первый знак =</b><b> var name = cookie, substrings, p); // Получить имя cookie</b><b> var value = cookie.substring(p+1); // Получить значение cookie</b><b> value = decodeURIComponent(value); // Декодировать значение</b><b> cookies[name] = value; // Сохранить имя и значение в объекте</b>