/*************************************************************************/
关于cookie的跨域访问及它在本应用中的作用:
在内网的环境中比较容易使用。
本组cookie相关函数,
函数组:
1、getCookie(sName):根据sName获取cookie值,字符串、空字符串、null;
2、setCookie(sName,sValue,lTime):设置sName变量的cookie值,lTime表示存活时限,为毫秒计时,
如果不设置则当前页面关闭时候就自动清除(cookie的expire机制)
3、delCookie(sName):删除sName变量,cookie的变量组限制为20,如果太多变量,以后的设置不方便;
4、clearCookie():删除所有的cookie变量。注意:在cookie跨域或者目录访问功能使用的时候,使用本函数要谨慎。
5、getCookieNames():获取当前页面所有的cookie变量名。返回数组或者null
6、getCookieCount():获取cookie变量的数量。
功能特性:
1、支持“非法名称”变量名(变量名可以为中文,包含空格……),变量值也可以是任意的字符串内容,还可以是空(empty!=null)。
2、支持跨域访问模式和目录功能。
使用限制;
1、受cookie本身机制的一些限制,如20组变量限制,大小限制,使用时候需要注意
2、setCookie函数,针对本应用功能,作了一些调整,为了实现跨域访问cookie。在移植到实际的系统的时候,
需要根据域名对变量sDomainRoot作一定的调整。
3、由于各自对字符串处理方式的不同,不能和其它cookie处理函数组配合使用
4、另外,关于cookie的跨域访问,还有些浏览器的限制,如域名的后两个部分是必须的,而且强制和当前页面符合。
/*************************************************************************/
var sDomainRoot=".OnceATime.com";
var sPathRoot="/";
//变量为空字符串的时候,表示作为无效值。不使用相关的功能内容。
makeCookieDomainPath();
function makeCookieDomainPath(sDomain,sPath){
if(sPath!=null) sPathRoot=sPath;
if(sDomain!=null) sDomainRoot=sDomain;
if(!sDomainRoot.match(//.[^/. ]+/.[^. ]+/)) sDomainRoot="";
//如果sDomainRoot不符合类似“.smart.com”这样的最低要求,则取消。
sDomainPathInfo="";
sDomainPathInfo+=(sDomainRoot)?(" ;domain="+sDomainRoot):"";
sDomainPathInfo+=(sPathRoot)?(" path="+sPathRoot):"";
return(sDomainPathInfo);
}
function getCookie(sName){
var reg1=new RegExp("(?: |//b)"+escape(sName)+"(?:=)?([^ =;]*)","i");
var ma1=document.cookie.match(reg1);
if(!ma1)
return(null);
return(unescape(ma1[1]));
}
function clearCookie(){
var ma1=getCookieNames();
if(!ma1) return(true);
var i;
for (i=0;i<ma1.length;i++)
delCookie(ma1[i]);
return(true);
}
function getCookieNames(){
var reg1=new RegExp("(([^ =;]+)(=|;)([^ =;]*))","ig");
var ma1=(document.cookie+";").match(reg1);
if (!ma1) return(ma1);
var i, arr1=new Array();
for(i=0;i<ma1.length;i++)
arr1[i]=unescape(ma1[i].match(/([^ =;]*)(=|;)/)[1]);
return (arr1);
}
function getCookieCount(){
var ma1=getCookieNames();
if(!ma1) return(0);
return(ma1.length);
}
function delCookie(sName){
setCookie(sName,"fangzy",-19781214);
}
function setCookie(sName, sValue ,lTime){
if(!sName) return(false);
var sExp="";
if(lTime){
var dat1=new Date();
dat1.setTime(dat1.getTime()+(lTime-1));
sExp=" ;expires="+dat1.toGMTString();
}
document.cookie = escape(sName) + "=" + escape(sValue) + sExp + sDomainPathInfo ;
}
function getCookieAll(){
var ma1=getCookieNames();
var arr1=new Array();
if(!ma1) return(arr1);
var i;
for(i=0;i<ma1.length;i++)
arr1[i]=getCookie(ma1[i]);
return(arr1);
}