JavaScript. Подробное руководство, 6-е издание, стр. 338

<b>  // Добавить в строку атрибуты cookie</b>

<b>  if (maxage) cookie += &quot;;</b>
<b> max-age=&quot; + maxage;</b>

<b>  if (path) cookie += &quot;;</b>
<b> path=&quot; + path;</b>

<b>  // Установить cookie с помощью свойства document.cookie</b>

<b>  document.cookie = cookie;</b>

<b>}</b>

<b>// Удаляет указанный cookie</b>

<b>this.removeItem = function(key) {</b>

<b>  if (!(key in cookies)) return; // Если не существует, ничего не делать</b>

<b>  // Удалить cookie из внутреннего множества cookies</b>

<b>  delete cookies[key];</b>

<b>  // И удалить ключ из массива имен.</b>

<b>  // Это легко можно было бы сделать с помощью метода indexOf() массивов,</b>

<b>  // определяемого стандартом ES5.</b>

<b>  for(var і = 0; і &lt; keys.length; i++) { // Цикл по всем ключам</b>

<b>    if (keys[i] === key) { // При обнаружении ключа</b>

<b>      keys.splice(i,1); // Удалить его из массива,</b>

<b>      break;</b>

<b>    }</b>

<b>  }</b>

<b>  this.length--; // Уменьшить значение length</b>

<b>  // Наконец фактически удалить cookie, присвоив ему пустое значение</b>

<b>  // и истекший срок хранения.</b>

<b>  document.cookie = key + &quot;=; max-age=0&quot;;</b>

<b>};</b>

20.3. Механизм сохранения userData в IE

В IE версии 5 и ниже поддерживается механизм сохранения данных на стороне клиента, доступный в виде нестандартного свойства

<b>behavior</b>
элемента документа. Использовать его можно следующим образом:

<b>var memory = document.createElement(&quot;div&quot;); // Создать элемент</b>

<b>memory.id = &quot;_memory”;                      // Дать ему имя</b>

<b>memory.style.display = &quot;none&quot;;              // He отображать его</b>

<b>memory.style.behavior = &quot;url('#default#userData')&quot;; // Присоединить свойство </b>

<b>document.body.appendChild(memory);          // Добавить в документ</b>

После того как для элемента будет определено поведение «userData», он получает новые методы

<b>load()</b>
и
<b>save().</b>
Вызов метода
<b>load()</b>
загружает сохраненные данные. Этому методу можно передать строку, напоминающую имя файла и идентифицирующую конкретный пакет хранящихся данных. После загрузки данных пары имя/значение становятся доступны в виде атрибутов элемента, получить которые можно с помощью метода
<b>getAttribute()</b>
. Чтобы сохранить новые данные, необходимо установить атрибуты вызовом метода
<b>setAttribute()</b>
и затем вызвать метод
<b>save().</b>
Удалить значение можно с помощью методов
<b>removeAttribute()</b>
и
<b>save().</b>
Ниже приводится пример использования элемента
<b>memory</b>
, инициализированного выше:

<b>memory.load(&quot;myStoredData&quot;);                // Загрузить сохраненные данные</b>

<b>var name = memory.getAttribute(&quot;username&quot;); // Получить элемент данных </b>

<b>if (!name) { // Если он не был определен,</b>

<b>  name = prompt(&quot;Как вас зовут?);         // запросить у пользователя</b>

<b>  memory.setAtttribute(&quot;username&quot;, name); // Установить как атрибут</b>

<b>  memory.save(&quot;myStoredData&quot;);            // И сохранить до следующего раза</b>

<b>}</b>

По умолчанию данные, сохраняемые с помощью механизма

<b>userData</b>
, имеют неограниченный срок хранения и сохраняются до тех пор, пока явно не будут удалены. Однако с помощью свойства
<b>expires</b>
можно определить дату, когда истечет срок хранения данных. Например, в предыдущий фрагмент можно было бы добавить следующие строки, чтобы указать, что срок хранения данных истечет через 100 дней:

<b>var now = (new Date()).getTime();              // Текущее время в миллисекундах</b>

<b>var expires = now + 100 * 24 * 60 * 60 * 1000; // + 100 дней в миллисекундах</b>

<b>expires = new Date(expires).toUTCString();     // Преобразовать в строку</b>

<b>memory.expires = expires;                      // Установить срок хранения</b>

Данные, сохраняемые с помощью механизма

<b>userData</b>
в IE, доступны только для документов, хранящихся в том же каталоге, что и оригинальный документ, сохранивший их. Это более ограниченная область видимости, чем у cookies, которые также доступны документам в подкаталогах оригинального каталога. В механизме
<b>userData</b>
отсутствует какой-либо эквивалент атрибутов
<b>path</b>
и
<b>domain</b>
в cookies, позволяющий расширить область видимости данных.