JavaScript cookie

1、認識cookie

  1. cookie : 存儲在本地的一個數據,當用戶訪問了某個網站(網頁)的時候,咱們就能夠經過cookie來向訪問者電腦上存儲數據。
  2. 不一樣的瀏覽器存放的cookie位置不同,也是不能通用的。
  3. cookie的存儲是以域名形式進行區分的,每一個域名對應一個cookie存儲地址。
  4. cookie的數據能夠設置名字的。
  5. 一個域名下存放的cookie的個數是有限制的,不一樣的瀏覽器存放的個數不同。
  6. 每一個cookie存放的內容大小也是有限制的,不一樣的瀏覽器存放大小不同。
  7. 默認存儲時間就是當前會話。
  8. cookie能夠設置多個,只有同名cookie可以覆蓋原來的cookie。

2、訪問cookie

要在服務器環境下,經過document.cookie來獲取當前網站下的cookie的時候,獲得的字符串形式的值,他包含了當前網站下全部的cookie。他會把全部的cookie經過一個分號+空格的形式串聯起來。json

consol.log( document.cookie );
複製代碼

3、存儲cookie

document.cookie = '數據名=值'; //不設置時間 ,當前會話結束
複製代碼

4、設置cookie過時時間

  1. cookie默認是臨時存儲的,當瀏覽器關閉進程的時候自動銷燬,若是咱們想長時間存放一個cookie。須要在設置這個cookie的時候同時給他設置一個過時的時間。過時時間必須是一個日期對象轉換成的字符串(時間戳.toGMTString())
  2. document.cookie = ‘數據名=值; expires=過時時間’;
  3. 把時間設置爲過時時間,cookie會被刪除。
document.cookie = 'name=abc;expires='+date.toGMTString();//date=>new Date();時間對象

var date = new Date(new Date().getTime() + 30 * 60 * 1000);//30分鐘後過時的cookie
document.cookie = 'name=abc;expires='+date.toGMTString();
複製代碼

5、封裝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);//數組的形式
setCookie({
    name : 'obj',
    value : 'dasjd=/\\||;',
    time : 10
});//json的形式

/* * 設置一個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;
}

/* * 刪除一個cookie * */
function delCookie(_name) {
    setCookie({
        name : _name,
        value : '',
        time : -1//設置一個過時時間
    });
}

/* * 獲取一個cookie * */
function getCookie(_name) {
    var data = document.cookie.match(new RegExp('\\b'+_name+'=([^;]+)(;|$)'));
    return data ? decodeURIComponent(data[1]) : '';
}

//判斷是否爲一個數組
function is_array(arr) {
     return  arr != null && typeof arr == 'object' && typeof arr.length == 'number'
}
複製代碼
相關文章
相關標籤/搜索