cookie工具函数letCookieUtil={get:function(name){letcookieName=encodeURIComponent(name)+"=",cookieStart=document.cookie.indexOf(cookieName),cookieValue=null;如果(cookieStart>-1){让cookieEnd=document.cookie.indexOf(";",cookieStart);如果(cookieEnd==-1){cookieEnd=document.cookie.length;}cookieValue=decodeURIComponent(document.cookie.substring(cookieStart+cookieName.length,cookieEnd));}返回cookie值;},set:function(name,value,expires,path,domain,secure){让cookieText=encodeURIComponent(name)+"="+encodeURIComponent(value);if(expiresinstanceofDate){cookieText+=";expires="+expires.toGMTString();}if(path){cookieText+=";path="+path;}如果(域){cookieText+=";域="+域;}如果(安全){cookieText+=";secure";}document.cookie=cookieText;},unset:function(name,path,domain,secure){this.set(name,"",newDate(0),path,domain,secure);}};CookieUtil.get()方法根据cookie的名称获取对应的值,它会在document.cookie字符串中寻找cookie名称加上等号的位置,如果找到,则使用indexOf()去查找position之后的第一个分号(表示cookie的结束位置),如果没有找到分号,则说明cookie是字符串中的最后一个,剩下的字符字符串就是cookie的值。该值使用decodeURIComponent()进行解码,最后返回。如果没有找到cookie,则返回null。CookieUtil.set()方法在页面上设置一个cookie,并接收以下参数:cookie的名称,cookie的值cookie,一个可选的Date对象,指定何时删除cookie,一个可选的cookieURL路径,一个可选的域,以及一个可选的布尔值,指示是否添加安全标志。参数按使用频率排序,只需要前两个。在此方法中,名称和值均使用encodeURIComponent()进行URL编码,并检查其他选项。如果expires参数是Date对象,那么将使用Date对象的toGMTString()方法正确格式化Date对象并将其添加到expires选项中。该方法的其余部分是构造cookie字符串并将其设置为document.cookie。没有直接的方法可以删除现有的cookie。因此,您需要用相同的路径、域和安全选项再次设置cookie,并将过期时间设置为过去。CookieUtil.unset()方法可以处理这种事情。它接收4个参数:要删除的cookie的名称、一个可选的路径参数、一个可选的域参数和一个可选的安全参数。这些参数被传递给CookieUtil.set()加上空字符串并将过期时间设置为1970年1月1日(Date对象的值初始化为0ms)。这将确保删除cookie//设置cookieCookieUtil.set("name","Nicholas");CookieUtil.set("book","专业JavaScript");//读取cookie的值alert(CookieUtil.get("name"));//“尼古拉斯”警报(CookieUtil.get(“书”));//《专业JavaScript》//删除cookieCookieUtil.unset("name");CookieUtil.unset("book");//设置cookie,包括其路径、域、有效期CookieUtil.set("name","Nicholas","/books/projs/","www.wrox.com",newDate("January1,2010"));//删除cookieCookieUtil.unset("name","/books/projs/","www.wrox.com");//设置安全cookieCookieUtil.set("name","Nicholas",null,null,null,true);为了规避浏览器对单个域名下cookies数量的限制,一些开发者使用了一个叫做子cookie(subcookie)的概念。子cookie是存储在单个cookie中的较小数据块。即使用cookie值来存储多个名值对。子cookie最常见的格式如下:name=value&name1=value1&name2=value2&name3=value3&name4=value4&name5=value5子cookie一般也采用querystring格式。然后可以使用单个cookie存储和访问这些值,而不是为每个名称-键-值对使用不同的cookie存储。最后,网站或Web应用程序可以存储更多结构化数据,而不会达到单域cookie限制。为了更好地操作子cookie,必须建立一系列新方法。根据cookie的预期用途,子cookie的解析和序列化略有不同且更为复杂。例如获取子cookie,首先和获取cookie的基本步骤相同,但是在解码cookie值之前,需要先获取子cookie的信息,如下所示。letSubCookieUtil={get:function(name,subName){letsubCookies=this.getAll(name);如果(subCookies){返回subCookies[subName];}else{返回空值;}},getAll:function(name){letcookieName=encodeURIComponent(name)+"=",cookieStart=document.cookie.indexOf(cookieName),cookieValue=null,cookieEnd,subCookies,i,parts,result={};如果(cookieStart>-1){cookieEnd=document.cookie.indexOf(";",cookieStart);如果(cookieEnd==-1){cookieEnd=document.cookie.length;}cookieValue=document.cookie.substring(cookieStart+cookieName.length,cookieEnd);如果(cookieValue.length>0){subCookies=cookieValue.split("&");对于(i=0,len=subCookies.length;i
