js操作cookie方法

Cookie 字符串

document.cookie 屬性看起來像一個正常的文本字符串,但它並不是。即使你向 document.cookie 寫一份完整的 cookie 字符串,當再次讀取時,你只能看到它的名稱-值對。

通過js讀取document.cookie的值就像這樣:

cookieKey1=value; cookieKey2=value

比如一個實際的document.cookie例子:

account=admin; ssid=0e20962dd7cb402011ae3909648819ca

js所有對cookie的操作其實都是通過對document.cookie 進行操作實現的;而且只能對當前domain的cookie進行操作,無法跨domain操作。

讀取 cookie 的函數

讀取cookie的函數只能獲取指定cookie的value值,無法獲取像超時時間和path等這樣的信息,讀取cookie的函數代碼如下:

function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i <ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
         }
         if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
         }
     }
    return "";
} 

設置 cookie 的函數

cookie有個特性就是如果設置了新 cookie(cookie的name和path都一樣),則舊的 cookie 會被覆蓋掉;否則,新的 Cookie 會被添加到 document.cookie,所以如果你想對cookie進行增加,修改和刪除,都可以通過設置cookie函數實現,設置cookie函數如下:

function setCookie(cname, cvalue, exdays, path) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=" + path;
}

注意:

  1. 新增cookie直接調用該函數即可
  2. 如果新增的cookie的名稱和path已經存在,則會覆蓋已有的cookie,即是對cookie進行修改
  3. 如果想刪除cookie,則通過該函數設置指定的cookie的超時時間爲當前或者已過去的時間即可。比如,刪除一個名爲 ssid,path爲 /sbs 的cookie
setCookie('ssid', '', 0, '/sbs');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章