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 相关文章推荐
解决 firefox 不支持 document.all的方法
Mar 12 Javascript
使用prototype.js 的时候应该特别注意的几个问题.
Apr 12 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
Apr 11 Javascript
JavaScript中constructor()方法的使用简介
Jun 05 Javascript
js如何判断输入字符串长度
Dec 16 Javascript
Node.js实现文件上传
Jul 05 Javascript
同步异步动态引入js文件的几种方法总结
Sep 23 Javascript
bootstrap suggest下拉框使用详解
Apr 10 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 jQuery
JavaScript实现多态和继承的封装操作示例
Aug 20 Javascript
Vue + Elementui实现多标签页共存的方法
Jun 12 Javascript
Js on及addEventListener原理用法区别解析
Jul 11 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
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
PHP新手上路(三)
2006/10/09 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
Python实现全局变量的两个解决方法
2014/07/03 Python
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
Python输入二维数组方法
2018/04/13 Python
django解决跨域请求的问题
2018/11/11 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
《珍珠泉》教学反思
2014/02/20 职场文书
行政助理工作职责范本
2014/03/04 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
大学生暑期实践报告
2015/07/13 职场文书
教你用python实现12306余票查询
2021/06/30 Python
js 数组 fill() 填充方法
2021/11/02 Javascript