Функция setCookie(name, value, options)
Стр 1 из 5Следующая ⇒ Куки, document.cookie Для чтения и записи cookie используется свойство document.cookie. Однако, оно представляет собой не объект, а строку в специальном формате, для удобной манипуляций с которой нужны дополнительные функции. Чтение document.cookie Наверняка у вас есть cookie, которые привязаны к этому сайту. Давайте полюбуемся на них. Вот так:
alert(document.cookie); Эта строка состоит из пар ключ=значение, которые перечисляются через точку с запятой с пробелом"; ". Значит, чтобы прочитать cookie, достаточно разбить строку по "; ", и затем найти нужный ключ. Это можно делать либо через split и работу с массивом, либо через регулярное выражение. Функция getCookie(name) Следующая функция getCookie(name) возвращает cookie с именем name: // возвращает cookie с именем name, если есть, если нет, то undefinedfunction getCookie(name) { var matches = document.cookie.match(new RegExp("(?:^|;)" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)")); return matches? decodeURIComponent(matches[1]): undefined;}Обратим внимание, что значение может быть любым. Если оно содержит символы, нарушающие форматирование, например, пробелы или;, то оно кодируется при помощи encodeURIComponent. Функция getCookie автоматически раскодирует его. Запись в document.cookie В document.cookie можно писать. При этом запись не перезаписывает существующие cookie, а дополняет к ним! Например, такая строка поставит cookie с именем userName и значением Vasya:
document.cookie = "userName=Vasya"; …Однако, всё не так просто. У cookie есть ряд важных настроек, которые очень желательно указать, так как значения по умолчанию у них неудобны. Эти настройки указываются после пары ключ=значение, каждое — после точки с запятой: path=/mypath Путь, внутри которого будет доступ к cookie. Если не указать, то имеется в виду текущий путь и все пути ниже него.
Как правило, используется path=/, то есть cookie доступно со всех страниц сайта. domain=site.com Домен, на котором доступно cookie. Если не указать, то текущий домен. Допустимо указывать текущий домен site.com и его поддомены, например forum.site.com. Если указать специальную маску.site.com, то cookie будет доступно на сайте и всех его поддоменах. Это используется, например, в случаях, когда кука содержит данные авторизации и должна быть доступна как на site.com, так и на forum.site.com. expires=Tue, 19 Jan 2038 03:14:07 GMT Дата истечения куки в формате GMT. Получить нужную дату можно, используя объект Date. Его можно установить в любое время, а потом вызвать toUTCString(), например: // +1 день от текущего моментаvar date = new Date;date.setDate(date.getDate() + 1);alert(date.toUTCString());Если дату не указать, то cookie будет считаться «сессионным». Такое cookie удаляется при закрытии браузера. Если дата в прошлом, то кука будет удалена. Secure Cookie можно передавать только по HTTPS. Например, чтобы поставить cookie name=value по текущему пути с датой истечения через 60 секунд:
var date = new Date(new Date().getTime() + 60 * 1000);document.cookie = "name=value; path=/; expires=" + date.toUTCString(); Чтобы удалить это cookie:
var date = new Date(0);document.cookie = "name=; path=/; expires=" + date.toUTCString(); При удалении значение не важно. Можно его не указывать, как сделано в коде выше. Функция setCookie(name, value, options) Если собрать все настройки воедино, вот такая функция ставит куки: function setCookie(name, value, options) { options = options || {}; var expires = options.expires; if (typeof expires == "number" && expires) { var d = new Date(); d.setTime(d.getTime() + expires * 1000); expires = options.expires = d; } if (expires && expires.toUTCString) { options.expires = expires.toUTCString(); } value = encodeURIComponent(value); var updatedCookie = name + "=" + value; for (var propName in options) { updatedCookie += "; " + propName; var propValue = options[propName]; if (propValue!== true) { updatedCookie += "=" + propValue; } } document.cookie = updatedCookie;}Аргументы: Name название cookie Value значение cookie (строка) Options Объект с дополнительными свойствами для установки cookie: Expires
Время истечения cookie. Интерпретируется по-разному, в зависимости от типа:
Path Путь для cookie. Domain Домен для cookie. Secure Если true, то пересылать cookie только по защищенному соединению.
Читайте также: G) ограниченная функция снизу и сверху Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|