Каков самый короткий, точный и совместимый с кросс-браузером способ чтения файла cookie в JavaScript?
Очень часто при создании автономных скриптов (где я не могу иметь никаких внешних зависимостей), я нахожу, что добавляю функцию для чтения файлов cookie и обычно отказываюсь от QuirksMode.org readCookie()
(280 байт, 216 миниатюр.)
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
Он выполняет эту работу, но ее уродливо, и каждый раз добавляет немного раздувания.
Метод, который jQuery.cookie использует что-то вроде этого (измененный, 165 байт, 125 миниатюр):
function read_cookie(key)
{
var result;
return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? (result[1]) : null;
}
Примечание. Это не соревнование "Code Golf": я законно заинтересован в уменьшении размера моей функции readCookie и в обеспечении того, что решение, которое у меня есть, действительно.