Ваш код кажется, работает нормально, но я думал, что разместил бы какой-то код, который я написал, чтобы обрабатывать файлы cookie через JavaScript, чтобы дать вам больше идей о том, что вы можете сделать. Я основывал его на примере MDN here, но с функциональностью, которую я хотел (объект-поиск, кеш до изменения). Не стесняйтесь поднять кусочки кода (или использовать его все) для своего проекта.
cookie.setItem('number', 1, 10 * 24 * 60 * 60); // expires is Number => seconds
cookie.getItem('number'); // "1"
функцияcookie
делает Строка правильно отформатирована для использования с document.cookie
, он принимает параметры ключ, Вэл, истекает, путь, домен, безопасный. Параметр истекает может быть Количество (секунд с этого момента или бесконечности), Дата или Строка.
функцияcookie.setItem
имеет то же значение, что и cookie
, но также применяет его. Если задан только ключ, предполагается, что он полностью отформатирован в файле cookie String.
функцияcookie.getItem
только принимает параметр ключ.
функцияcookie.removeItem
имеет параметры ключ, путь. Вам нужно всего лишь использовать ключ.
var cookie = (function() {
var cookieString = '',
items = {},
expireNever = new Date(new Date().valueOf() + 64e10).toGMTString(), // 20 years
expireNow = 'Thu, 01 Jan 1970 00:00:00 GMT',
cookie,
__update,
supportsMaxAge = 1;
__update = function() {
var a, i, j, o = {};
cookieString = document.cookie;
a = cookieString.split('; ');
i = a.length;
while (i--) {
j = a[i].indexOf('=');
o[decodeURIComponent(a[i].slice(0, j))]
= decodeURIComponent(a[i].slice(j + 1));
}
items = o;
}
cookie = function cookie(key, val, expires, path, domain, secure) {
var s = encodeURIComponent(''+key) + '='
+ encodeURIComponent(''+val);
if (!key) return '';
if (expires || expires === 0) {
switch (expires.constructor) {
case Number:
if (expires === Infinity) expires = 'expires=' + expireNever;
else {
if (supportsMaxAge) expires = 'max-age=' + expires;
else expires = 'expires=' + new Date(new Date().valueOf() + expires * 1000).toGMTString();
}
break;
case Date:
expires = 'expires=' + expires.toGMTString();
break;
default:
case String:
expires = 'expires=' + expires;
break;
}
s = s + '; ' + expires;
}
if (domain) s = s + '; domain=' + domain;
if (path) s = s + '; path=' + path;
if (secure) s = s + '; secure';
return s;
};
cookie.getNames = function() {
if (document.cookie !== cookieString) __update();
return Object.keys(items);
};
cookie.getItem = function (key) {
var s;
if (document.cookie !== cookieString) __update();
s = items[key];
if (s || s === '') return s;
return null;
};
cookie.setItem = function (key, val, expires, path, domain, secure) {
var s;
if (!key) return null;
if (val === void 0) s = key;
else s = cookie(key, val, expires, path, domain, secure);
document.cookie = s;
return s;
};
cookie.hasItem = function (key) {
if (cookie.getItem(key) === null) return false;
return true;
};
cookie.removeItem = function (key, path) {
if (cookie.setItem(key, '', expireNow, path)) return true;
return false;
};
// find out if max-age is supported
cookie.setItem('test_cookie_max_age', '1', 0);
if (cookie.getItem('test_cookie_max_age')) {
supportsMaxAge = 0;
cookie.removeItem('test_cookie_max_age');
}
__update();
return cookie;
}());
Я пробовал использовать предоставленный код, но это, похоже, работает отлично для меня. Этот вывод, который вы добавили, возвращается для ReadCookie («число»), правильно? –
Да! Он работал нормально, но теперь это отстой. –
Код работает очень хорошо в браузере Chrome –