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 相关文章推荐
jQuery控制网页打印指定区域的方法
Apr 07 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
Oct 16 Javascript
JavaScript获取浏览器信息的方法
Nov 20 Javascript
JavaScript函数内部属性和函数方法实例详解
Mar 17 Javascript
AngularJs表单验证实例详解
May 30 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
Feb 09 Javascript
Dropify.js图片宽高自适应的方法
Nov 27 Javascript
详解webpack 入门与解析
Apr 09 Javascript
vue实现多条件和模糊搜索功能
May 28 Javascript
vue中keep-alive组件的入门使用教程
Jun 06 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
Jul 24 Javascript
JS中队列和双端队列实现及应用详解
Sep 29 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
function.inc.php超越php
2006/12/09 PHP
php MYSQL 数据备份类
2009/06/19 PHP
php 日期时间处理函数小结
2009/12/18 PHP
PHP中改变图片的尺寸大小的代码
2011/07/17 PHP
smarty模板引擎从php中获取数据的方法
2015/01/22 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
javascript全局变量封装模块实现代码
2012/11/28 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
python实现的阳历转阴历(农历)算法
2014/04/25 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
Python实现随机选择元素功能
2017/09/14 Python
python找出完数的方法
2018/11/12 Python
python文本数据处理学习笔记详解
2019/06/17 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
华为c/c++笔试题
2016/01/25 面试题
《记承天寺夜游》教学反思
2014/02/16 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书