2013-02-02 45 views
0

我正在嘗試對javascript cookie進行演示測試。請找到我編寫的測試代碼。javascript刪除Cookie在瀏覽器中的工作奇怪

<html> 
<head> 
<script type='text/javascript' > 

function setcookie() 
{ 
    alert("check if cookie avail:" +document.cookie.split(';')); 
    var dt=new Date(); 

    document.cookie='name=test'; 
    document.cookie='expires='+dt.toUTCString()+';' 
    alert("now cookie val:" +document.cookie.split(';')); 

    dt.setDate(dt.getDate()-1); 
    document.cookie = "expires=" + dt.toUTCString() + ";" 
    alert("after deletion cookie val:" + document.cookie.split(';')); 
} 
</script> 

</head> 
<body> 
    <input id='txt' onchange='setcookie()' /> 
</body> 
</html> 

的代碼將工作,

Initally,這將顯示這是該瀏覽器目前已經餅乾,然後我嘗試設置一個cookie與1天「名稱=測試」到期時間。使用警報我可以看到該cookie中設置的值。在下一行中,我嘗試通過將過期日期設置爲當前日期1來刪除cookie。如果我使用alert來打印cookie值,則cookie以過期日期顯示爲currentdate-1。

我的問題是,

  1. 在Mozilla中,如果我刷新瀏覽器,並嘗試做同樣的步驟,則第一個警報顯示與到期時間的currentdate-1的cookie的值。爲什麼即使我在腳本的最後一行刪除了即時獲取cookie值。但是,一旦我關閉了瀏覽器,cookie的值就是空的。爲什麼是這樣?
  2. 在chrome中,如果我運行同一段代碼,則不設置任何cookie。爲什麼我無法在Chrome瀏覽器中設置Cookie。

請告訴我爲什麼不同瀏覽器之間會出現這種差異。

回答

1

這不是設置期滿

document.cookie='name=test'; 
document.cookie='expires='+dt.toUTCString()+';' 

這是

document.cookie='name=test; expires='+dt.toUTCString()+';' 

最好是採取行之有效的cookie的代碼,並使用該

試試這一個或使用jQuery插件如果您使用jQuery

// cookie.js file 
var daysToKeep = 14; // default cookie life... 
var today  = new Date(); 
var expiryDate = new Date(today.getTime() + (daysToKeep * 86400000)); 


/* Cookie functions originally by Bill Dortsch */ 
function setCookie (name,value,expires,path,theDomain,secure) { 
    value = escape(value); 
    var theCookie = name + "=" + value + 
    ((expires) ? "; expires=" + expires.toGMTString() : "") + 
    ((path)  ? "; path=" + path : "") + 
    ((theDomain) ? "; domain=" + theDomain : "") + 
    ((secure)  ? "; secure"   : ""); 
    document.cookie = theCookie; 
} 

function getCookie(Name) { 
    var search = Name + "=" 
    if (document.cookie.length > 0) { // if there are any cookies 
     var offset = document.cookie.indexOf(search) 
     if (offset != -1) { // if cookie exists 
     offset += search.length 
     // set index of beginning of value 
     var end = document.cookie.indexOf(";", offset) 
     // set index of end of cookie value 
     if (end == -1) end = document.cookie.length 
     return unescape(document.cookie.substring(offset, end)) 
     } 
    } 
} 
function delCookie(name,path,domain) { 
    if (getCookie(name)) document.cookie = name + "=" + 
     ((path) ? ";path=" + path : "") + 
     ((domain) ? ";domain=" + domain : "") + 
     ";expires=Thu, 01-Jan-70 00:00:01 GMT"; 
} 
+0

對不起,我不想要任何現有的代碼。在這裏我試圖通過做樣本自己學習JavaScript代碼。我只想知道我的代碼在瀏覽器中無法正常工作的原因。 – fewtalks

+0

查看更新..... – mplungjan

相關問題