簡述Cookie

在使用網站時,是否遇過打開以前登錄過的登錄頁面,賬號已經自動填充;微博寫文章時不小心關閉頁面再打開,之前書寫的內容還在;之前看到一半的視頻重新打開后繼續播放...這些功能的實現就需要本地儲存,即常說的Cookie,以及H5中新提供的localstorage/sessionstorage

JS里的Cookie

首先了解其特性:

  1. 在服務環境下;
  2. 存儲在用戶的本地機器上(臨時且不安全);
  3. 過期時間:默認session——會話期間有效,在會話結束、瀏覽器關閉后消失;
  4. 容量:4K左右,有些瀏覽器甚至有條數限制;
  5. 格式:其值均保存為string類型。
保存Cookie
  document.cookie = `${name} = ${value}; path = /; expires = ${time}`;
  //name——名稱;value——內容;path——保存路徑;expires——過期時間

需要注意的是

  1. path保存的路徑最好指定為/,意指根目錄,通常一個網站只用一套Cookie,而path在默認保存到當前目錄時,子級能讀取上級目錄的Cookie,而上級目錄卻無法讀取子級的Cookie;
  2. value,既然Cookie里存的都是字符串,那么存的時候就明確的寫成字符串,避免系統做對應的類型轉換,另外,Cookie里不能存中文,若需要則進行轉碼;
  3. expires的值為一個日期對象,但是Cookie里保存的數據類型為string,所以我們需要一個方法保存這種格式:
oDate.toUTCString();
讀取Cookie

同樣是document.cookie,但此時讀取的Cookie包含所有內容,若需要單獨某條,就需要字符串方法進行處理:

function getCookie(name){
    var arr = document.cookie.split('; ');
    for(var i = 0; i < arr.length; i++){
        var arr2 = arr[i].split('=');
        if(name == arr2[0]){
            return arr2[1];
        }
    }
    return '';
}
修改與刪除

修改Cookie的話通過再次添加同名Cookie就行了;
刪除Cookie可以直接去瀏覽器設置里清除瀏覽器數據最為暴力,也可以在控制臺尋找Cookie欄右鍵刪除選中數據,若要代碼實現的話,可以修改其過期時間,這意味著其值可以是過去的時間。

JQuery插件jquery.cookie.js

保存Cookie的方法為:

  $.cookie(`${name}`, `${value}`,{
        expires:1,
        path:`/`
    })

需要注意的是:

  1. 根據Cookie數據類型為string的特性,如保存數據為json時,應寫為'{a: 1, b: 2}',若是{a: 1, b: 2},讀取則為'object object';
  2. 這里指定天數,會與正常時間相差8小時,其值也能設置為日期對象,另外,天數可以為設置為負數,即刪除該條Cookie。
  3. 其他用法與原生相似。

Cookie與LocalStorage

H5新提供的LocalStorage與SessionStorage比起Cookie有了更多新的特性,在用法上也有不少差異,而且由于是H5的新內容所以只兼容IE8及以上版本瀏覽器,所以兩者在實際運用中各有其優勢。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容