js操做cookies方法的改進

這段操做cookies的方法我使用好久了,可是一直一來沒遇到什麼問題,今天在作一個在第一個頁面保存了cookies,第二個頁面獲取或者第三個頁面獲取的功能中,發現了方法的侷限性,好比,第一個頁面路徑爲 http://xxxxx/cyb-car2016/h5OfficeWorker/index,第二個頁面路徑爲 http://xxxxx/cyb-car2016/h5AlertController/index,其中除了域名是同樣以外,還有一個命名空間不同,而cookies是默認保存在當前頁面下,因此在第一個頁面中保存了cookies,由於保存的路徑不一樣,第二個頁面會獲取不到cookies。 解決方法是,在保存cookies的時候,設置一下path,document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString()+";path=/"; ,其中path=/表示保存在域名路徑下,全局可用cookie

/***********************操做cookies的方法***************************/
//寫cookies 
//這是有設定過時時間的使用示例: 
//s20是表明20秒 
//h是指小時,如12小時則是:h12 
//d是天數,30天則:d30 
function setCookie(name,value,time){
    var strsec = getsec(time); 
    var exp = new Date(); 
    exp.setTime(exp.getTime() + strsec*1); 
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString()+";path=/"; 
}

//讀取cookies 
function getCookie(name){
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
 
    if(arr=document.cookie.match(reg)) 
        return unescape(arr[2]); 
    else 
        return false; 
}

// 刪除cookies
function delCookie(name){
	var exp = new Date();
	exp.setTime(exp.getTime() - 1);
	var cval=getCookie(name);
	if(cval!=null)
	document.cookie= name + "="+cval+";expires="+exp.toGMTString()+";path=/";
}

function getsec(str){
   //alert(str); 
   var str1=str.substring(1,str.length)*1; 
   var str2=str.substring(0,1); 
   if (str2=="s")
   { 
        return str1*1000; 
   }
   else if (str2=="h")
   { 
       return str1*60*60*1000; 
   }
   else if (str2=="d")
	   { 
	       return str1*24*60*60*1000; 
	   } 
}


//獲取Cookie
//var name = getCookie("name");
//var phone = getCookie("phone");
//
//if(phone != ""){
//	$("input[name=phone]").val(phone);
//}
//if(name!="false"){
//	$("input[name=name]").val(name);
//}

/***********************操做cookies的方法***************************/
相關文章
相關標籤/搜索