博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS存储cookie读取cookie删除cookie详细用法
阅读量:4636 次
发布时间:2019-06-09

本文共 2349 字,大约阅读时间需要 7 分钟。

假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的,当发生页面跳转或者页面关闭的时候,这些变量的值会重新载入,即没有达到保存的效果。解决这个问题的最好的方案是采用cookie来保存该变量的值。

cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。

JS设置cookie:

简单方式:document.cookie="name="+username;

封装方法:

//写cookies,一个小时过期      function setCookie(name, value) {          var exp = new Date();          exp.setTime(exp.getTime() + 60 * 60 * 1000);          document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/";      }

  注意:

  1. path=/,path参数用来设置cookie路径,同一路径下不能存储相同名字的两个cookie,当存第二个的时候会把第一个覆盖其实相当于对第一个进行了赋值操作;  
  2. 不同路径下可以存储相同名字的cookie。读取时如果在多个路径下存在多个cookie,则会读取页面所对应的路径(不是物理路径,是cookie的路径)下的cookie,不注意这点  
  3. 可能会造成读取的cookie值不正确。删除时只能删除对应路径下的cookie,不指定路径,默认删除的是页面所对应的路径下的cookie。

     读取cookies

   

//读取cookies      function getCookie(name) {          var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");            if (arr = document.cookie.match(reg))                return unescape(arr[2]);          else              return null;      }

  删除cookies  

//删除cookies      function delCookie(name) {          var exp = new Date();          exp.setTime(exp.getTime() - 60 * 60 * 1000);          var cval = getCookie(name);          if (cval != null)              document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString() + ";path=/";      } 删除时只能删除对应路径下的cookie,不指定路径,默认删除的是页面所对应的路径下的cookie。 

  

  1. //如果需要设定自定义过期时间  
  2. //那么把上面的setCookie 函数换成下面两个函数就ok;  
  3. //程序代码 
[css] view plain copyfunction 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天则:d30setCookie("name","hayden","s20"); 

  1. path=/,path参数用来设置cookie路径,同一路径下不能存储相同名字的两个cookie,当存第二个的时候会把第一个覆盖其实相当于对第一个进行了赋值操作;  
  2. 不同路径下可以存储相同名字的cookie。读取时如果在多个路径下存在多个cookie,则会读取页面所对应的路径(不是物理路径,是cookie的路径)下的cookie,不注意这点  
  3. 可能会造成读取的cookie值不正确。删除时只能删除对应路径下的cookie,不指定路径,默认删除的是页面所对应的路径下的cookie。

转载于:https://www.cnblogs.com/DSC1991/p/9232325.html

你可能感兴趣的文章
Less的Extend_Less继承
查看>>
final,finalize,finally的区别?
查看>>
Codeforces 671A Recycling Bottles(贪心+思维)
查看>>
Poj 1015
查看>>
WPF中的字体改善
查看>>
LINQ定义委托匿名方法
查看>>
SharePoint 2013 配置Excel Services
查看>>
sharepoint delete file
查看>>
符号表管理——哈工大编译原理课程(四)
查看>>
递归算法之汉诺塔
查看>>
Spring配置文件beans标签报错问题解决
查看>>
ios某个控制器强制横竖屏
查看>>
centos 更改root密码
查看>>
几种常用的网络协议
查看>>
[小游戏资源] 微信小游戏开发资源目录
查看>>
java布尔值进行and和or逻辑运算原理
查看>>
新加入博客园,嘿嘿
查看>>
零散的C笔记
查看>>
正则 /\D/g
查看>>
一小时看懂正则表达式
查看>>