前端除了sessionStorage、localStorage之外,還有一種本地存儲方式,即cookie。
注意,要使用cookie,頁面必須在服務器中運行,直接雙擊打開頁面無法使用cookie。
在進行微信公眾號頁面開發時,由於localStorage退出微信無法自動清除數據,而sessionStorage每次關閉頁面就會清除數據。
既想要退出微信可以清除數據,而關閉頁面又仍有留有登錄信息時,我們可以選擇把token存儲在cookie中。
cookie相關代碼如下所示:
//設置自定義過期時間cookie function setCookie(name,value,time){ var msec = getMsec(time); //獲取毫秒 var exp = new Date(); exp.setTime(exp.getTime() + msec*1); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString() + ";path=/"; }
//將字符串時間轉換為毫秒,1秒=1000毫秒 function getMsec(str){ var timeNum=str.substring(0,str.length-1)*1; //時間數量 var timeStr=str.substring(str.length-1,str.length); //時間單位后綴,如h表示小時 if (timeStr=="s"){ //20s表示20秒 return timeNum*1000;} else if (timeStr=="h"){ //12h表示12小時 return timeNum*60*60*1000;} else if (timeStr=="d"){ return timeNum*24*60*60*1000;} //30d表示30天 }
//讀取cookies function getCookie(name){ var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); //正則匹配 if(arr=document.cookie.match(reg)){ return unescape(arr[2]); } else{ return null; } }
//刪除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=/" } }
其中的要點為:
1.cookie存在document.cookie中。
2.刪除cookie則設置cookie的過期時間為當前時間-1。
3.設置cookie時需要對value進行編碼,即使用escape函數,取出時需要進行解碼,即使用unescape函數。
注:escape() 函數可對字符串進行編碼,這樣就可以在所有的計算機上讀取該字符串。