晴明的博客园 GitHub      CodePen      CodeWars     

[js] cookie

#cookie必须经过URL编码  

 

#getCookie

            function getCookie(name) {
                var cookieName = encodeURIComponent(name) + "=",
                    cookieStart = document.cookie.indexOf(cookieName),
                    cookieValue = null,
                    cookieEnd;
                if (cookieStart > -1) {
                    cookieEnd = document.cookie.indexOf(";", cookieStart);
                    //如果是最后一个
                    if (cookieEnd == -1) {
                        cookieEnd = document.cookie.length;
                    }
                    cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));
                }
                return cookieValue;
            }

 

#setCookie

            function setCookie(name, value, expires, path, domain, secure) {
                var cookieText = encodeURIComponent(name) + "=" + encodeURIComponent(value);
                if (expires instanceof Date) {
                    cookieText += "; expires=" + expires.toUTCString(); //unix时间
                }
                if (path) {
                    cookieText += "; path=" + path;
                }
                if (domain) {
                    cookieText += "; domain=" + domain;
                }
                if (secure) {
                    cookieText += "; secure";
                }
                document.cookie = cookieText;
            }

 

#unsetCookie

            function unsetCookie(name, path, domain, secure) {
                setCookie(name, "", new Date(0), path, domain, secure); //过期失效
            }

 

#

            //in server
            window.addEventListener('load', function() {
                document.getElementById("name-value").innerHTML = getCookie("name");
                document.getElementById("book-value").innerHTML = getCookie("book");
                document.getElementById("delete-btn").addEventListener('click', function() {
                    unsetCookie("name");
                    unsetCookie("book");
                })
                setCookie("name", "Nicholas");
                setCookie("book", "Professional JavaScript");
            })

 

#SubCookie

            function getAllSubCookie(name) {
                var cookieName = encodeURIComponent(name) + "=",
                    cookieStart = document.cookie.indexOf(cookieName),
                    cookieValue = null,
                    cookieEnd,
                    subCookies,
                    i,
                    parts,
                    result = {};
                if (cookieStart > -1) {
                    cookieEnd = document.cookie.indexOf(";", cookieStart)
                    if (cookieEnd == -1) {
                        cookieEnd = document.cookie.length;
                    }
                    cookieValue = document.cookie.substring(cookieStart + cookieName.length, cookieEnd);
                    if (cookieValue.length > 0) {
                        subCookies = cookieValue.split("&");
                        for (i = 0, len = subCookies.length; i < len; i++) {
                            parts = subCookies[i].split("=");
                            result[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
                        }
                        return result;
                    }
                }
                return null;
            }

            function getSubCookie(name, subName) {
                var subCookies = getAllSubCookie(name);
                if (subCookies) {
                    return subCookies[subName];
                } else {
                    return null;
                }
            }

            function setAllSubCookie(name, subcookies, expires, path, domain, secure) {
                var cookieText = encodeURIComponent(name) + "=",
                    subcookieParts = new Array(),
                    subName;
                for (subName in subcookies) {
                    if (subName.length > 0 && subcookies.hasOwnProperty(subName)) {
                        subcookieParts.push(encodeURIComponent(subName) + "=" + encodeURIComponent(subcookies[subName]));
                    }
                }
                if (subcookieParts.length > 0) {
                    cookieText += subcookieParts.join("&");
                    if (expires instanceof Date) {
                        cookieText += "; expires=" + expires.toUTCString();
                    }
                    if (path) {
                        cookieText += "; path=" + path;
                    }
                    if (domain) {
                        cookieText += "; domain=" + domain;
                    }
                    if (secure) {
                        cookieText += "; secure";
                    }
                } else {
                    cookieText += "; expires=" + (new Date(0)).toUTCString();
                }
                document.cookie = cookieText;
            }

            function setSubCookie(name, subName, value, expires, path, domain, secure) {
                var subcookies = getAllSubCookie(name) || {};
                subcookies[subName] = value;
                setAllSubCookie(name, subcookies, expires, path, domain, secure);
            }

            function unsetSubCookie(name, subName, path, domain, secure) {
                var subcookies = getAllSubCookie(name);
                if (subcookies) {
                    delete subcookies[subName];
                    setAllSubCookie(name, subcookies, null, path, domain, secure);
                }
            }

            function unsetAllSubCookie(name, path, domain, secure) {
                setAllSubCookie(name, null, new Date(0), path, domain, secure);
            }

#

            window.addEventListener('load', function() {
                document.getElementById("name-value").innerHTML = getSubCookie("data", "name");
                document.getElementById("book-value").innerHTML = getSubCookie("data", "book");
                document.getElementById("delete-btn").addEventListener('click', function() {
                    unsetSubCookie("data", "name");
                    unsetSubCookie("data", "book");
                })
                setSubCookie("data", "name", "Nicholas");
                setSubCookie("data", "book", "Professional JavaScript");
                console.log(document.cookie);
            })

 

function getCookie(name) {
        var result = null;
        var myCookie = document.cookie + ";";
        var searchName = name + "=";
        var startOfCookie = myCookie.indexOf(searchName);
        var endOfCookie;
        if (startOfCookie != -1) {
            startOfCookie += searchName.length;
            endOfCookie = myCookie.indexOf(";", startOfCookie);
            result = (myCookie.substring(startOfCookie, endOfCookie));
        }
        return result;
    }

 

function setCookie(name, value, Hours) {
var d = new Date();
var offset = 8;
var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
var nd = utc + (3600000 * offset);
var exp = new Date(nd);
exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);
document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=360doc.com;"
}


function getCookie(name) {
var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
if (arr != null) return unescape(arr[2]);
return null
}

 

posted @ 2016-01-21 15:25  晴明桑  阅读(136)  评论(0编辑  收藏  举报