Javascript 对cookie操作详解及实例


Posted in Javascript onDecember 29, 2016

js 操作 cookie 的方法

cookie

cookie,有时候也用其复数形式Cookies,指某些网站为了辨别用户身份,进行session跟踪而储存在用户本地终端上的数据(经常通过加密)。定义于RFC2109和2965都已废弃,最新取代的规范是RFC6265。

cookie的作用

服务器可以利用Cookie包含信息的任意性来筛选经常性维护这些信息,以判断在HTTP传输中的状态。Cookie最典型的英语是判断注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录步骤,浙西都是Cookie的功能。另一个重要张合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookie,以便在最后付款时提取信息。

js设置cookie

document.cookie="key=value";
//例
document.cookie="name=weiqi";

//可以在控制台中打印出cookie
console.log(document.cookie);

如何修改和获取cookie

js中并没有提供获取cookie的方法,所以只能自己封装方法,相同的key的cookie只能存在一个,如果定义了一个document.cookie="age=21",后面又定义了document.cookie="age=30",那么后面定义的cookie会覆盖前面定义的cookie,所以修改cookie值的时候只用重新定义个key相同的cookie就可以了。那么获取cookie的时候也只用在cookie中获取到这个key后面的“=”和“;”直接的字符串,那就是这个cookie的值了,获取的方法又很多种,这里我写一种比较简单的:

function getCookie(key){
  var index = document.cookie.indexOf(key);
  var returnValue;
  if(index!==-1){
    var tIndex = document.cookie.indexOf(";",index);
    var target = document.cookie.substring(index,tIndex);
    var returnValue = decodeURIComponent(target.replace(key+"=",""))
  }
  return returnValue;
}

document.cookie="name=weiqi";
getCookie("name"); //weiqi

删除cookie

cookie是有有效期的,前面我们设置cookie的时候都没有设置有效期,如果我们将cookie的有效期设置成一个已经过去的时间,那么它就无效了,下面来实现一下:

function delCookie(key){
  var d = new Date();
  document.cookie=key+"=;expires="+ d.toGMTString();
}

document.cookie="name=weiqi";
delCookie("name"); //undefined

给cookie设置一个有效期

通过expires给cookie设置一个有效期,现在我们设置一个cookie的有效期是10天,如下:

var d = new Date();
var time = 10;
d.setTime(d.getTime()+time*1000*60*60*24);
document.cookie="name=weiqi;expires="+ d.toGMTString();

封装cookie

将自定义的一些方法完善一下封装成一个对象,这样在使用的时候就可以直接拿来用了:

//封装cookie方法的对象
var cookie = {
  setCookie:function(key,value,time){
    if(key == undefined){
      return;
    }
    if(time!== undefined){
      var d = new Date();
      d.setTime(d.getTime()+time*1000*60*60*24);
      document.cookie=key+"="+value+";expires="+ d.toGMTString();
    }else{
      document.cookie=key+"="+value;
    }
  },
  getCookie:function(key){
    var index = document.cookie.indexOf(key);
    var returnValue;
    if(index!==-1){
      var tIndex = document.cookie.indexOf(";",index);
      var target = document.cookie.substring(index,tIndex);
      var returnValue = decodeURIComponent(target.replace(key+"=",""))
     }
    return returnValue;
  },
  delCookie:function(key){
    var d = new Date();
    document.cookie=key+"=;expires="+ d.toGMTString();
  }
}


//测试
cookie.setCookie("home")
cookie.setCookie("name","卫旗");
cookie.setCookie("age",22);
cookie.setCookie("sex","男")
cookie.getCookie("sex")
cookie.delCookie("age")

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
IE浏览器打印的页眉页脚设置解决方法
Dec 08 Javascript
JavaScript 字符串处理函数使用小结
Dec 02 Javascript
jquery制作LED 时钟特效
Feb 01 Javascript
jquery ztree异步搜索(搜叶子)实践
Feb 25 Javascript
实例详解jQuery的无new构建
Aug 02 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
在Swiper内如何制作CSS3动画效果示例代码
Dec 07 Javascript
Angular2学习笔记之数据绑定的示例代码
Jan 03 Javascript
vue使用video.js进行视频播放功能
Jul 18 Javascript
解决Layui数据表格显示无数据提示的问题
Nov 14 Javascript
vue实现前端列表多条件筛选
Oct 26 Javascript
在antd4.0中Form使用initialValue操作
Nov 02 Javascript
前端 Vue.js 和 MVVM 详细介绍
Dec 29 #Javascript
javascript显示系统当前时间代码
Dec 29 #Javascript
解析JavaScript模仿块级作用域
Dec 29 #Javascript
JavaScript仿支付宝6位数字密码输入框
Dec 29 #Javascript
vue实现列表的添加点击
Dec 29 #Javascript
详解javascript表单的Ajax提交插件的使用
Dec 29 #Javascript
基于javascript的Form表单验证
Dec 29 #Javascript
You might like
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
angularjs基础教程
2014/12/25 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
浅谈用VSCode写python的正确姿势
2017/12/16 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
Internet主要有哪些网络群组成
2015/12/24 面试题
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
艾滋病宣传活动总结
2014/05/08 职场文书
写字楼租赁意向书
2014/07/30 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
代收款委托书范本
2014/10/01 职场文书
心灵捕手观后感
2015/06/02 职场文书
同学聚会开幕词
2019/04/02 职场文书
python字典进行运算原理及实例分享
2021/08/02 Python
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS