使用JavaScript操作Cookie
使用JavaScript操作Cookie
相關文檔請見DHTML.CHM。里面有完整的操作方法說明。以下是代碼示例。
1、使用JavaScript保存一個Cookie
var date = new Date(); //聲明當前時間
var time = 1000*60*60*24; //這是一天。1000毫秒(即1秒)*60=1分鐘
time = date.getTime()+time; //當前時間的毫秒值相加
date.setTime(time); //設置時間,這時的時間已經是加上1天以后的時間了
var path = "<%=request.getContextPath()%>";//獲取當前項目的目錄
document.cookie="name=JSJack;expires="+date.toUTCString()+";path="+path;//保存Cookie
在上面的設置中,顯式的設置了path。不果不設置則為當前頁面所在的路徑。
說明:在JS中保存Cookie時,格式有明確的說明為:
<!--[endif]-->
說明:GMT時間和UTC時間,都是標準時間,由于toGMTString已經被廢棄,所以推薦使用toUTCString()。
2、使用JS讀取Cookie
var cs = document.cookie.split(";");//根據;(分號)分隔所有Cookie
div.innerHTML=cs.length; //判斷Cookie的個數寫到已定義的div中
for(var i=0;i<cs.length;i++){ //遍歷Cookie
var c = cs[i];
div.innerHTML+="<br/>"+c; //顯示Cooke,格式為:Name=Value
}
顯示結果如下:
1 //這是個數
name=JSJack //這是Cookie
3、使用JS刪除一個Cookie
刪除時,必須要與原來的值設置的完全一樣,否則刪除不成功。刪除時,只要將時間設置為一個過期的時間即可以刪除。
代碼示例:
創建:
var date = new Date(); //聲明當前時間
var time = 1000*60*60*24; //這是一天。1000毫秒(即1秒)*60=1分鐘
time = date.getTime()+time; //當前時間的毫秒值相加
date.setTime(time); //設置時間,這時的時間已經是加上1天以后的時間了
document.cookie="name=JSJack;expires="+date.toUTCString()+";path=/";//保存Cookie
刪除:
<script type="text/javascript">
//刪除Cookie只要將時間設置為過期時間即可
var date = new Date(1900,1,1);//聲明一個已經過去的時間
document.cookie="name=ok;expires="+date.toUTCString()+";path=/";//執行刪除
</script>
4、保存中文示例
Cookie中不可以保存中文。有些瀏覽器如IE,雖然看上去可以處理中文,但會使整個JS解析終止,所以,不可以直接保存中文。
如果要保存中文,應該使用escape(string)進行編碼,當然讀取一個經過編碼的cookie時,還必須要經過unescape(string)解碼。關于escape的說明請查詢JavaScript的文檔:
保存中文的示例代碼:
var date = new Date(); //聲明當前時間
var time = 1000*60*60*24; //這是一天。1000毫秒(即1秒)*60=1分鐘
time = date.getTime()+time; //當前時間的毫秒值相加
date.setTime(time); //設置時間,這時的時間已經是加上1天以后的時間了
var cn = "你好"; //聲明需要保存的中文
cn = escape(cn); //對中文進行編碼
document.cookie="name="+cn+";expires="+date.toUTCString()+";path=/";//保存Cookie
讀取中文時當然也要進行unescape的解碼:
var cs = document.cookie.split(";");//根據;(分號)分隔所有Cookie
div.innerHTML=cs.length; //判斷Cookie的個數寫到已定義的div中
for(var i=0;i<cs.length;i++){ //遍歷Cookie
var c = cs[i];
div.innerHTML+="<br/>"+c; //顯示Cooke,格式為:Name=Value
var cc = c.split("="); //根據=等于號進行分隔
div.innerHTML+="<br/>"+cc[0]+","+unescape(cc[1]);//對value部分進行解碼
}