[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
}