JavaScript之cookie技术详解


Posted in Javascript onNovember 18, 2016

运用JS设置cookie、读取cookie、删除cookie
JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的。

而cookie是运行在客户端的,所以可以用JS来设置cookie.

假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的,当发生页面跳转或者页面关闭的时候,这些变量的值会重新载入,即没有达到保存的效果。解决这个问题的最好的方案是采用cookie来保存该变量的值,那么如何来设置和读取cookie呢?
首先需要稍微了解一下cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。

JS设置cookie:

假设在A页面中要保存变量username的值(“jack”)到cookie中,key值为name,则相应的JS代码为:
document.cookie="name="+username; 

JS读取cookie:
假设cookie中存储的内容为:name=jack;password=123

则在B页面中获取变量username的值的JS代码如下:

var username=document.cookie.split(";")[0].split("=")[1]; 

//JS操作cookies方法!

//写cookies

function setCookie(name,value) 
{ 
  var Days = 30; 
  var exp = new Date(); 
  exp.setTime(exp.getTime() + Days*24*60*60*1000); 
  document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); 
}

//读取cookies 
function getCookie(name) 
{ 
  var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");

  if(arr=document.cookie.match(reg))

    return unescape(arr[2]); 
  else 
    return null; 
}

//删除cookies 
function delCookie(name) 
{ 
  var exp = new Date(); 
  exp.setTime(exp.getTime() - 1); 
  var cval=getCookie(name); 
  if(cval!=null) 
    document.cookie= name + "="+cval+";expires="+exp.toGMTString(); 
} 
//使用示例 
setCookie("name","hayden"); 
alert(getCookie("name"));

//如果需要设定自定义过期时间 
//那么把上面的setCookie 函数换成下面两个函数就ok;


//程序代码 
function setCookie(name,value,time)
{ 
  var strsec = getsec(time); 
  var exp = new Date(); 
  exp.setTime(exp.getTime() + strsec*1); 
  document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); 
} 
function getsec(str)
{ 
  alert(str); 
  var str1=str.substring(1,str.length)*1; 
  var str2=str.substring(0,1); 
  if (str2=="s")
  { 
    return str1*1000; 
  }
  else if (str2=="h")
  { 
    return str1*60*60*1000; 
  }
  else if (str2=="d")
  { 
    return str1*24*60*60*1000; 
  } 
}
//这是有设定过期时间的使用示例: 
//s20是代表20秒 
//h是指小时,如12小时则是:h12 
//d是天数,30天则:d30

setCookie(“name”,”hayden”,”s20”);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
顶部缓冲下拉菜单导航特效的JS代码
Aug 27 Javascript
将查询条件的input、select清空
Jan 14 Javascript
首页图片漂浮效果示例代码
Jun 05 Javascript
详解addEventListener的三个参数之useCapture
Mar 16 Javascript
简单的jQuery入门指引
Jul 28 Javascript
jQuery图片切换动画特效
Nov 02 Javascript
微信小程序 picker 组件详解及简单实例
Jan 10 Javascript
D3.js进阶系列之CSV表格文件的读取详解
Jun 06 Javascript
vue实现手机号码抽奖上下滚动动画示例
Oct 18 Javascript
layui实现三级联动效果
Jul 26 Javascript
原生JS实现记忆翻牌游戏
Jul 31 Javascript
vue修改Element的el-table样式的4种方法
Sep 17 Javascript
js前端解决跨域问题的8种方案(最新最全)
Nov 18 #Javascript
js前端实现多图图片上传预览的两个方法(推荐)
Nov 18 #Javascript
js实时获取窗口大小变化的实例代码
Nov 18 #Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
Nov 18 #Javascript
整理一下常见的IE错误
Nov 18 #Javascript
require、backbone等重构手机图片查看器
Nov 17 #Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
Nov 17 #Javascript
You might like
随时给自己贴的图片加文字的php代码
2007/03/08 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
python动态加载变量示例分享
2014/02/17 Python
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
python和ruby,我选谁?
2017/09/13 Python
python队列queue模块详解
2018/04/27 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
Tensorflow 实现释放内存
2020/02/03 Python
python数字类型math库原理解析
2020/03/02 Python
Python super()方法原理详解
2020/03/31 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
大韩航空官方网站:Korean Air
2017/10/25 全球购物
性能服装:HYLETE
2018/08/14 全球购物
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
一套Delphi的笔试题一
2016/02/14 面试题
高中军训感言200字
2014/02/23 职场文书
慰问信模板
2015/02/14 职场文书
活着观后感
2015/06/03 职场文书
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis
python中 Flask Web 表单的使用方法
2022/05/20 Python
springcloud整合seata
2022/05/20 Java/Android