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 相关文章推荐
总结AJAX相关JS代码片段和浏览器模型
Aug 15 Javascript
Jquery异步请求数据实例代码
Dec 28 Javascript
Chosen 基于jquery的选择框插件使用方法
May 30 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
Oct 11 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
Jul 05 Javascript
Javascript中的call()方法介绍
Mar 15 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
Jan 04 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
May 26 Javascript
jquery mobile移动端幻灯片滑动切换效果
Apr 15 Javascript
angularJs 表格添加删除修改查询方法
Feb 27 Javascript
vue权限问题的完美解决方案
May 08 Javascript
jQuery - AJAX load() 实例用法详解
Aug 27 jQuery
前端 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面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
深入解析PHP的Yii框架中的缓存功能
2016/03/29 PHP
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
浅谈Python中函数的参数传递
2016/06/21 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
简单了解python的一些位运算技巧
2019/07/13 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
JDO的含义
2012/11/17 面试题
普通院校学生的自荐信
2013/11/27 职场文书
银行个人求职自荐信范文
2013/12/16 职场文书
社会实践心得体会
2014/01/03 职场文书
大学生作弊检讨书
2014/02/19 职场文书
四年级小学生评语
2014/12/26 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
考试作弊检讨书
2015/01/27 职场文书
小学班主任自我评价
2015/03/11 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL
python保存图片的四个常用方法
2022/02/28 Python
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL