全回顾扫盲之cookie

cookie:客户端保持状态的方案

cookie的内容主要包括:名字,值,过期时间,路径和域。

根据同源协议,cookie只能通域内访问。

若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。

cookie的操作方法,大概是下面这几种,也可以去看最新的

添加/更新一个cookie

添加一个cookie时,如果需要长时间保存,要设置过期时间。getTime()获取当前时间戳,在此基础上加上30天的时间(毫秒),即为30天后过期。

escape(value) 是对cookie值进行一次转码,读取的时候再解码,解决存中文字符时乱码的情况。

/*********************************************************************************************************************
 * COOKIE 操作类
 */

/******************************
 * 添加一个cookie
 */
util.setCookie = function (key, value) {
    var Days = 30
    var exp = new Date()
    exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000)
    document.cookie = key + '=' + escape(value) + ';expires=' + exp.toGMTString()
}

/*******************************
 * 获取某个cookie的值
 */
util.getCookie = function (key) {
    var allcookies = document.cookie
    var arr = allcookies.split(';')
    var value
    for (var i = 0; i < arr.length; i++) {
        var strIn = arr[i]
        var pos = strIn.indexOf('=')
        var regEx = /\s+/g
        if (strIn.substring(0, pos).replace(regEx, '') === key) {
            value = strIn.substring(pos + 1, strIn.length)
        }
    }
    return unescape(value)
}

/**********************************
 * 判断某个cookie是否存在
 */
util.containCookie = function (key) {
    var allcookies = document.cookie
    var cookiePos = allcookies.indexOf(key)
    if (cookiePos > -1) {
        return true
    }
    return false
}

/**********************************
 * 移除某个cookie
 *
 * 如果只移除一个,传第一个参数
 * 如果全部移除,传两个参数,如('', true)
 */
util.removeCookie = function (key, removeAll) {
    var removeAll = typeof removeAll === 'boolean' ? removeAll : false
    var keys = document.cookie.match(/[^ =;]+(?=\=)/g)
    if (keys) {
        for (var i = 0; i < keys.length; i ++) {
            if (!removeAll) {
                if (keys[i] === key) {
                    document.cookie = keys[i] + '=0;expires=' + new Date(0).toUTCString()
                }
            } else {
                document.cookie = keys[i] + '=0;expires=' + new Date(0).toUTCString()
            }
        }
    }
}

随机浏览