js中如何设置cookie的保存时间呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中如何设置cookie的保存时间呢?相关的知识,希望对你有一定的参考价值。

代码如下图,我是想第一次进入网站是进入欢迎页的,第二次以后就进入网站主页了,但一关闭浏览器cookie就没了,又得进入欢迎页。请教一下如何设置这个cookie的保存时间,如1个月,这一个月内如果不是手动清除cookie的话都是进入网站主页。

<SCRIPT language="javascript">
function GetCookie(Name)

var search = Name + "="
var Cookie =document.cookie;
if (Cookie.length <= 0 )return "";// cookie 不存在,返回空值
if (Cookie.indexOf(search)==-1)return "";// 'visited' 不存在,返回空值
start = Cookie.indexOf(search)+ search.length//"visited=yes"起始位置索引值
end = Cookie.indexOf(";", start);//"visited=yes"终止位置索引值
if (end == -1);//";"不存在
end = Cookie.length;
return unescape(Cookie.substring(start, end))

function SetCookie()

if (GetCookie('visited')=='')

document.cookie="visited=yes"
document.location.href="index.html";//修改为首页


SetCookie()
</SCRIPT>

设置cookie的保存时间,通过cookie的expires性质指定一个终止时间就可以了。也就是说,你在设置cookie的时候,你的cookie字串要像下面这样组合:

var d= new Date();
d.setHours(d.getHours() + (24 * 30)); //保存一个月
document.cookie = "visited=yes; expires=" + d.toGMTString();

这样你的cookie就能保存一个月了,下面是我测试用的代码,你自己看看是否有其他帮助,有的话尽管拿去:

<html>
  <head>
    <script language="javascript">
      function Window_Load()
       setCookie("name","111"); //临时cookie
       setCookie("age","222",24 * 7);  //保存7天
       setCookie("address","333",24,"/"); //保存1天,path为根目录
       
       //设定cookie为安全的(secure=true),只能在HTTPS或与其他安全协议
       //连接在一起的时候才被传输
       setCookie("phone","444",24,"/",".",false);
       alert(document.cookie);
       alert(getCookie("age"));
       
       //删除名称为"age"的cookie
       removeCookie("age") 
       alert(document.cookie);
       //删除名称为"address"的cookie,因为设置时设定的path,所以删除
       //时也需要传入对应path
       removeCookie("address","/") 
       alert(document.cookie);  
      
      
      function setCookie(name,value,hours,path,domain,secure)
       var cdata = name + "=" + value;
       if(hours)
       var d = new Date();
       d.setHours(d.getHours() + hours);
       cdata += "; expires=" + d.toGMTString();
      
       cdata +=path ? ("; path=" + path) : "" ;
       cdata +=domain ? ("; domain=" + domain) : "" ;
       cdata +=secure ? ("; secure=" + secure) : "" ;
       document.cookie = cdata;
      
      
      function getCookie(name)
       var reg = eval("/(?:^|;\\\\s*)" + name + "=([^=]+)(?:;|$)/"); 
       return reg.test(document.cookie) ? RegExp.$1 : "";
      
      
      function removeCookie(name,path,domain)
       this.setCookie(name,"",-1,path,domain);
      
       
    </script>
  </head>
  <body onload="Window_Load();">
  
  </body>
</html>

参考技术A var cookie = function () 
        //expires参数是Date()实例
        var set = function (cookieName, cookieValue, expires, path, domain, secure) 
            var A = arguments;
            var H = arguments.length;
            var B = (2 < H) ? A[2].toGMTString() : "";
            var G = (3 < H) ? A[3] : "";
            var D = (4 < H) ? A[4] : "";
            var F = (5 < H) ? A[5] : false;
            document.cookie = cookieName + "=" + escape(cookieValue) + ";expires =" + B + ";path = " + G + ";domain =" + D + ((F == true) ? ";secure" : " ")
        
        //cname:cookie名称,itemName:该cookie中某一项名称
        var get = function (cname, itemName) 
            var A = document.cookie.match(new RegExp("(^| )" + cname + "=([^;]*)(;|$)"));
            if (A) 
                if (itemName) 
                    A = A[2].match(new RegExp("(?:^|&)" + itemName + "=([^&]*)(?:&|$)"))
                    return A ? A[1] : "";
                
                else 
                    return A[2];
                
            
            else 
                return "";
            
        
        return 
            set: set,
            get: get
        
    ();

//使用: 

cookie.set("test", "值", new Date(Date.parse('2016-1-1')))

参考技术B setDate(exdate.getDate()+10) //getDate()表示天数,这里表示存储10天
setDate(exdate.getHours()+10) //存储10个小时
...
完整范例请参考:http://www.daixiaorui.com/read/6.html
还有设置cookie作用域,全站cookie的方法。

运用JS设置cookie读取cookie删除cookiev

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");





















































































以上是关于js中如何设置cookie的保存时间呢?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置cookie的过期时间

js写cookie,如何完成其保存功能

如何用js向cookie中保存数据,取数据。

C#中如何保存cookie到本地

cookie的设置获取和删除

设置cookie