js中使用cookie的地方有很多辽剧,保存用戶(hù)名及密碼蹂安,保存登陸信息等辫红,使下次用戶(hù)上線就有很好的體驗(yàn)~。下面來(lái)說(shuō)說(shuō)js中cookie的使用方法和封裝方法
1被济、(設(shè)置)設(shè)置cookie救赐,設(shè)置cookie一般需要設(shè)置值和時(shí)間,如果不設(shè)置時(shí)間則會(huì)隨著瀏覽器關(guān)閉而關(guān)閉只磷!
設(shè)置值的形式為“屬性=值”的形式经磅,設(shè)置的時(shí)候還算舒服,可是獲取就不是那么人性化了~
var time = new Date( new Date().getTime() + 365*24*60*60*1000 ); //設(shè)置時(shí)間為365天(有的網(wǎng)頁(yè)就是這么暴力钮追,直接整一年Tぱ帷)
document.cookie = "dd=goudan;expires="+time.toGMTString();"http://
此時(shí)我們可看到我們已經(jīng)設(shè)置了一個(gè)名為dd ,值為goudan的cookie元媚,如果要查看可以打開(kāi)chrome瀏覽器點(diǎn)擊此處查看
[圖片上傳失敗...(image-ca4575-1515155390053)]
2轧叽、(獲取)此時(shí)我們獲取cookie的時(shí)候這樣: (這里有個(gè)點(diǎn)很關(guān)鍵;莼佟S糖邸!鞠绰,如果本地獲取不到腰埂,試著開(kāi)一個(gè)服務(wù),使用webstrom等自帶服務(wù)器的軟件打開(kāi)即可)
var c = document.cookie;
alert( c );
此時(shí)我們看到的是dd=goudan,想要要獲取值我們還得對(duì)著一串字符串進(jìn)行操作
var arr = document.cookie.match(new RegExp("(\\s|^)"+key+"=([^;]*)(;|$)"));
這里使用正則來(lái)匹配名蜈膨,arr中即為設(shè)置dd的值 goudan屿笼。
3、(刪除)刪除cookie我們只需要設(shè)置一個(gè)負(fù)的時(shí)間翁巍,驴一,并將值賦值為空,即為過(guò)去時(shí)間灶壶,就可以刪除cookie
var time = new Date( new Date().getTime() + -1*24*60*60*1000 );//這里設(shè)置時(shí)間為-1
document.cookie = "ddi=; expires="+time.toGMTString();
到這里肝断,所有對(duì)cookie的操作就完了,但有時(shí)候我們并不想這么麻煩,下面就給出封裝的方法來(lái)更人性化的操作
/*
這里我們?cè)O(shè)置的時(shí)候直接傳入json格式的數(shù)據(jù)即可完成多個(gè)cookie的保存胸懈,時(shí)間單位按照天來(lái)計(jì)算担扑。
獲取的時(shí)候我們只需要傳入需要獲取的名,(即前面的dd即可返回goudan)
刪除時(shí)傳入需要?jiǎng)h除的名(數(shù)組形式,如["dd"])即可完成刪除趣钱,此處需要?jiǎng)h除多個(gè)涌献,可傳入數(shù)組的形式如["dd","name","age"],即可刪除dd對(duì)應(yīng)的值
*/
//設(shè)置cookie
function setCookie(vJson , time){
var data = new Date( new Date().getTime() + time*24*60*60*1000 ).toGMTString();
for (var key in vJson)document.cookie = key+"="+vJson[key]+"; expires="+data;
}
//獲取cookie
function getCookie(key){
var arr = document.cookie.match(new RegExp("(\\s|^)"+key+"=([^;]*)(;|$)"));
return arr?arr[2]:"";
}
//移除cookie
function removeCookie(akey){
var arr = akey;
var json = {};
var length = arr.length;
for(var i = 0; i<arr.length;i++)json[akey[i]] = "";
setCookie(json , -1);
}