2012-05-17 184 views
18

我有一個函數來創建一個cookie,傳遞cookie的名稱,值和到期日(天)。如何設置這個cookie永不過期

下面是函數:

function setCookie(c_name,value,exdays) { 
    var exdate=new Date(); 
    exdate.setDate(exdate.getDate() + exdays); 
    var c_value=escape(value) + ((exdays==null) ? "" : "; 
    expires="+exdate.toUTCString()); 
    document.cookie=c_name + "=" + c_value; 
} 

function getCookie(c_name) { 
    var i,x,y,ARRcookies=document.cookie.split(";"); 
    for (i=0;i<ARRcookies.length;i++) { 
     x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
     y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
     x=x.replace(/^\s+|\s+$/g,""); 
     if (x==c_name) { 
      return unescape(y); 
     } 
    } 
} 

功能正常工作,但什麼做我需要做的設置cookie不會過期?

+0

Dupe of http://stackoverflow.com/a/532660/1793718 – Lucky

回答

10

變量exdays是多久,直到cookie過期,只需在您的函數調用中將該值設置爲幾千天即可。

setCookie('cookiename', 'cookievalue', 10000); //expires in 10k days 
28

無法設置爲never expire。 這不是一個javascript的限制,它只是不是cookie的規範的一部分http://www.faqs.org/rfcs/rfc2965.html

您可以設定將來的日期。例如將其設置爲從現在起的20年,請撥打setCookie20*365作爲exdays參數,因爲您的setCookie函數預計在它過期前的多少天。如下所示

setCookie('cookiename','cookie_val',20*365);