什么是cookie
cookie:会话跟踪技术 客户端
session:会话跟踪技术 服务端
在网页中怎么查看cookie里面的数据情况?
1.可以在编辑器中输入document.cookie,然后打印或输出即可
2.Chrome浏览器中F12打开,开发者工具 —— Application面板中查找cookie即可
cookie作用:
将网页中的数据保存到浏览器中
cookie生命周期:
默认情况下cookie生命周期是一次会话(浏览器被关闭)
可以通过expires来设置cookie的生命周期
- 如果通过expires=设置了过期时间, 并且过期时间没有过期, 那么下次打开浏览器还是存在
- 如果通过expires=设置了过期时间, 并且过期时间没有过期, 那么下次打开浏览器还是存在
以下代码块示例怎么修改cookie的过期时间并设置到当天的时间
var date = new Date();
date.setDate(curTime.getDate()+1) //这里可以加一就是明天,也可以减一就是昨天也就看不到此数据,两者只能选其一
document.cookie = "name=xuyuxin;expires="+date.toGMTString()+";";
alert(document.cookie);
cookie其他注意点:
- cookie默认不会保存任何数据
- cookie不能一次性保存多条数据
- cookie保存数据有大小和个数限制: 个数限制:20~60 , 总大小不能超过4KB左右
cookie作用范围:
- 同一个浏览器同一个路径下访问
- 如果在同一个浏览器中,默认情况下,下一级路径也能访问
- 如果在同一个浏览器中,想让上一级目录也能访问到保存的cookie数据,那么需要添加一个path属性即可(如下)
document.cookie = "name=xuyuxin;path=/;"
例如:
保存到了www.it666.com/jQuery/Ajax/路径下,
我们想在 www.it666.com/jQuery/Ajax/13-weibo/,
和 www.it666.com/jQuery/ 路径下也能访问
例如:
我们在www.it666.com下面保存了一个cookie,
那么我们在edu.it666.com中是无法访问的
如果想在edu.it666.com中也能访问, 那么我们需要再添加一个domain属性才可以;
document.cookie = "name=zs;path=/;domain=it666.com;";
*/
cookie封装
/**
* @param {*} option.key
* @param {*} option.value
* @param {*} option.path
* @param {*} option.domain
* @param {*} option.beOverDueTime
* @method 添加一条cookie数据
*/
function addCookie(option) {
//路径
var index = window.location.pathname.lastIndexOf("/"),
curPath = window.location.pathname.slice(0, index);
option.path = option.path || curPath;
//域名作用域
option.domain = option.domain || document.domain;
//过期时间
if(!option.beOverDueTime){
//没传则直接创建cookie
document.cookie = option.key+"="+option.value+";path="+option.path+";domain="+option.domain+";";
}else{
//创建cookie
var date = new Date();
date.setDate(date.getDate()+option.beOverDueTime);
document.cookie = option.key+"="+option.value+";path="+option.path+";domain="+option.domain+";expires="+date.toGMTString()+";";
}
}
/**
* @param {*} key
* @method 获取指定的cookie数据
*/
function getCookie(key){
for(var i = 0 ; i<document.cookie.split(";").length;i++){
if(document.cookie.split(";")[i].split("=")[0].trim()===key){
return document.cookie.split(";")[i].split("=")[1].trim();
}
}
}
/**
* @param {*} key
* @param {*} path
* @method 删除指定的cookie数据,注意点:默认只能删除默认路径的cookie数据,想删除别的路径的cookie,必须在调用函数前传入指定的路径即可删除
*/
function delCookie(key,path){
addCookie({
key:key,
value:getCookie(key),
path:path,
beOverDueTime: -1
})
}
hash
hash能实现和cookie一样的功能,各有各的好处,hash使用起来被cookie方便许多
添加一条hash数据
window.location.hash = 要添加的数据;
获取hash数据
//在js中没有专门获取hash数据的函数,因此只能自寻方法这里用substring()函数截取
console.log(window.location.hash.substring(1)) //从索引为1的字符串开始截取