<!--
1. 键:cookie 的名称,存储时一般要经过 URL 编码(使用encodeURI()方法);
2. 值:cookie 的取值,同样必须经过 URL 编码;
3. 域(domain):指明 cookie 对于哪个域是有效的;
4. 路径(path):指明域中哪个路径才可以使用这个 cookie;
5. 失效时间(expires):表示 cookie 何时应该被删除,默认情况下,浏览器会话结束后就将所有 cookie 删除,
不过也可以自己设置删除时间,如果设置的过期时间是过去的日期,则 cookie 会立即删除;
-->
<script>
// 封装cookie
// var CookieUtil = {
// set: // 添加
// get: // 获取
// unset: // 删除
// clear: // 清空
// }
// 添加
var CookieUtil = {
set: function (key, val, day, domain, path) {
// exp 现在的时间
var exp = new Date();
// 设置记录现在的天数和时间
exp.setDate(exp.getDate() + day);
document.cookie =
encodeURIComponent(key) +
"=" +
encodeURIComponent(val) +
";expires =" +
exp.toGMTString() +
";domain =" +
(domain ? domian : location.hostname) +
";path =" +
(path ? path : location.pathname);
},
// 删除
unset: function (key, domain, path) {
this.set(key, "", -1, domain, path);
},
// 获取
get: function (key) {
var name = encodeURIComponent(key) + "=",
start = document.cookie.indexOf(name);
if (start > -1) {
var end = document.cookie.indexOf(";", start);
if (end === -1) {
end = document.cookie.length;
}
return decodeURIComponent(
document.cookie.substring(start + name.length, end)
);
} else {
return null;
}
},
// 清除
clear: function (domain, path) {
var pattern = /;{0,1}[\w,\%]+\=/g;
var arr = document.cookie.match(pattern); // 获取所有键名(带等于号)
for (var i = 0; i < arr.length; i++) {
this.unset(
decodeURIComponent(arr[i].slice(0, arr[i].length - 1)),
domain,
path
);
}
},
};
CookieUtil.set("名字1", "张一", 10);
CookieUtil.set("名字2", "张三", 10);
CookieUtil.set("名字3", "李四", 10);
// CookieUtil.unset('名字')
console.log(CookieUtil.get("名字"));
CookieUtil.clear()
</script>