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 相关文章推荐
地震发生中逃生十大法则
May 12 Javascript
IE 当eval遇上function的处理
Aug 09 Javascript
jQuery代码优化 事件委托篇
Nov 01 Javascript
javascript改变position值实现菜单滚动至顶部后固定
Jan 18 Javascript
一个js导致的jquery失效问题的解决方法
Nov 27 Javascript
jquery 中的each()跳出循环的语句
May 23 Javascript
JS实现弹性菜单效果代码
Sep 07 Javascript
Node.js+Express配置入门教程
May 19 Javascript
Node.js 使用AngularJS的方法示例
May 11 Javascript
如何在基于vue-cli的项目自定义打包环境
Nov 10 Javascript
JavaScript类的继承操作实例总结
Dec 20 Javascript
vue实现评价星星功能
Jun 30 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下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
JavaScript中的闭包原理分析
2010/03/08 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
node结合swig渲染摸板的方法
2018/04/11 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
python基础教程项目二之画幅好画
2018/04/02 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
老同学聚会感言
2014/02/23 职场文书
高效课堂标语
2014/06/26 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
出租车拒载检讨书
2015/01/28 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
党员承诺书范文2015
2015/04/27 职场文书
golang import自定义包方式
2021/04/29 Golang
MySQL 服务和数据库管理
2021/11/11 MySQL
element tree树形组件回显数据问题解决
2022/08/14 Javascript