Я использую функцию, которая устанавливает cookie. Эта функция позволяет указать имя файла cookie, значение cookie и дополнительную дату истечения срока действия файла cookie.
функция:
function setCookie(name, value, exdate) {
var c_value = escape(value) + ((exdate === null || exdate === undefined) ? "" : "; expires=" + exdate);
document.cookie = name + "=" + c_value;
};
использование:
setCookie("my-cookie-name","my-value","Sun, 15 Jul 2012 00:00:01 GMT");
Я использовал функцию с форматом даты выше и считаю, что он совместим с перекрестным браузером, поскольку я тестировал, если файл cookie остается после закрытия различных браузеров и их повторного открытия. Я обнаружил, что были проблемы при использовании формата типа "15 Jul 2012"
. Этот формат работал у меня во время разработки в firefox, но другие браузеры только, казалось, устанавливали cookie как cookie сеанса.
Должен ли я использовать только этот формат: "Sun, 15 июля 2012 00:00:01 GMT" или есть другие форматы, которые я мог бы использовать для даты истечения срока действия, которая будет работать во всех основных браузерах (IE 7 -9, Firefox, Chrome, Opera, Safari)?
EDIT/UPDATE:
Для файлов cookie требуется, чтобы дата истечения срока действия находилась в формате UTC/GMT (см. ответ ниже).
Я отредактировал мою функцию следующим образом, чтобы преобразовать любые даты, прошедшие в том, что они не находятся в формате corect.
function setCookie(name, value, exdate) {
//If exdate exists then pass it as a new Date and convert to UTC format
(exdate) && (exdate = new Date(exdate).toUTCString());
var c_value = escape(value) + ((exdate === null || exdate === undefined) ? "" : "; expires=" + exdate);
document.cookie = name + "=" + c_value;
};