JavaScript Cookies
来源:链接
function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start) if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end)) } } return ""; }
解释:
1. cookie保存在系统中的时候是以“cookie名1=cookie值;cookie名2=cookie值”这样的方式来保存的。 2. document.cookie是返回包含所有cookie的字符串。 3. document.cookie.indexOf(c_name + "=")是取得这个cookie名在整个cookie中的位置。【加"="号:取cookie名加上等于号的位置,比方整个cookie是"user=tony;passwd=user123",这时候查找名为user的cookie的值的时候,是查找"user="的位置,如果不要等于号,就会找到其他位置的"user",比如后面密码里面也有user字符但并不是cookie名所在的位置。因为cookie中cookie名都是唯一的,所以加上等于号就不会出错了。】
4. c_start=c_start + c_name.length+1是用先前取得的位置加上cookie名的长度再加1,就是把位置确定在这个cookie名的"="符号的后面。 5. c_end=document.cookie.indexOf(";",c_start)是从上一步的位置开始查找,直到";"的位置。 6. document.cookie.substring(c_start,c_end))就是取该cookie名的等号后面到分号前面的字符串,即对应的cookie值。
cookie 的内容格式是 名字=值 所以var search = name + "="; 这句的意思是把“名字=”作为搜索的标示字符串,如果不加等号在遇到“值”当中包含“名字”时会发生错误。
if(document.cookie.length>0) 这句你解释的对 就是判断有没有COOKIE
offset = document.cookie.indexOf(search); 这句是查找你想搜索项在COOKIE中的偏移地址,如果没找到项中的“名字”返回值为-1
offset += search.length; 如果有返回值的时候,返回值是“名字=”这个字符串的开始地址,可你需要的是后面“值”的地址,所以要在本来的返回值地址上加上“名字=”这个字符串的长度
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。