一、認(rèn)識(shí)cookie
- cookie : 存儲(chǔ)在本地的一個(gè)數(shù)據(jù)蒋院,當(dāng)用戶訪問了某個(gè)網(wǎng)站(網(wǎng)頁)的時(shí)候金闽,我們就可以通過cookie來向訪問者電腦上存儲(chǔ)數(shù)據(jù)。
- 不同的瀏覽器存放的cookie位置不一樣促脉,也是不能通用的辰斋。
- cookie的存儲(chǔ)是以域名形式進(jìn)行區(qū)分的,每個(gè)域名對(duì)應(yīng)一個(gè)cookie存儲(chǔ)地址瘸味。
- cookie的數(shù)據(jù)可以設(shè)置名字的宫仗。
- 一個(gè)域名下存放的cookie的個(gè)數(shù)是有限制的,不同的瀏覽器存放的個(gè)數(shù)不一樣旁仿。
- 每個(gè)cookie存放的內(nèi)容大小也是有限制的藕夫,不同的瀏覽器存放大小不一樣。
- 默認(rèn)存儲(chǔ)時(shí)間就是當(dāng)前會(huì)話枯冈。
- cookie可以設(shè)置多個(gè)毅贮,只有同名cookie能夠覆蓋原來的cookie。
二尘奏、訪問cookie
要在服務(wù)器環(huán)境下滩褥,通過document.cookie
來獲取當(dāng)前網(wǎng)站下的cookie的時(shí)候,得到的字符串形式的值炫加,他包含了當(dāng)前網(wǎng)站下所有的cookie瑰煎。他會(huì)把所有的cookie通過一個(gè)分號(hào)+空格的形式串聯(lián)起來。
consol.log( document.cookie );
三俗孝、存儲(chǔ)cookie
document.cookie = '數(shù)據(jù)名=值'; //不設(shè)置時(shí)間 酒甸,當(dāng)前會(huì)話結(jié)束
四、設(shè)置cookie過期時(shí)間
- cookie默認(rèn)是臨時(shí)存儲(chǔ)的赋铝,當(dāng)瀏覽器關(guān)閉進(jìn)程的時(shí)候自動(dòng)銷毀插勤,如果我們想長時(shí)間存放一個(gè)cookie。需要在設(shè)置這個(gè)cookie的時(shí)候同時(shí)給他設(shè)置一個(gè)過期的時(shí)間革骨。過期時(shí)間必須是一個(gè)日期對(duì)象轉(zhuǎn)換成的字符串(時(shí)間戳.toGMTString())
document.cookie = ‘?dāng)?shù)據(jù)名=值; expires=過期時(shí)間’;
- 把時(shí)間設(shè)置為過期時(shí)間农尖,cookie會(huì)被刪除。
document.cookie = 'name=abc;expires='+date.toGMTString();//date=>new Date();時(shí)間對(duì)象
var date = new Date(new Date().getTime() + 30 * 60 * 1000);//30分鐘后過期的cookie
document.cookie = 'name=abc;expires='+date.toGMTString();
五苛蒲、封裝cookie
var cookieArr = [
{
name : 'test1',
value : '30分鐘',
time : 30
},
{
name : 'test2',
value : '50分鐘',
time : 50
},
{
name : 'test3',
value : '30天',
time : 30 * 24 * 60
},
{
name : 'test4',
value : '30秒',
time : 0.5
}
];
setCookie(cookieArr);//數(shù)組的形式
setCookie({
name : 'obj',
value : 'dasjd=/\\||;',
time : 10
});//json的形式
/*
* 設(shè)置一個(gè)cookie //
* */
function setCookie(data) {
if(is_array(data)){
for(var i = 0,iL = data.length;i < iL;i++){
setCookie(data[i]);
}
}else{
var _date = new Date(new Date().getTime() + data.time * 60 * 1000).toGMTString();
document.cookie = data.name+'='+encodeURIComponent(data.value)+';expires='+_date;
}
//var _date = new Date(new Date().getTime() + data.time * 60 * 1000).toGMTString();
//document.cookie = data.name+'='+data.value+';expires='+_date;
}
/*
* 刪除一個(gè)cookie
* */
function delCookie(_name) {
setCookie({
name : _name,
value : '',
time : -1//設(shè)置一個(gè)過期時(shí)間
});
}
/*
* 獲取一個(gè)cookie
* */
function getCookie(_name) {
var data = document.cookie.match(new RegExp('\\b'+_name+'=([^;]+)(;|$)'));
return data ? decodeURIComponent(data[1]) : '';
}
//判斷是否為一個(gè)數(shù)組
function is_array(arr) {
return arr != null && typeof arr == 'object' && typeof arr.length == 'number'
}