用JavaScript读取cookie的最短、准确且跨浏览器兼容的方法是什么?
通常,在构建独立脚本时(在那里我不能有任何外部依赖关系),我发现自己添加了一个用于读取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;
}
请注意这不是一个“代码高尔夫”比赛:我合理地对减少我的readCookie函数的大小感兴趣,并确保我的解决方案是有效的。