2012-04-03 72 views
0

我正在尋找一種方法來在javascript中的本地主機上創建/檢測cookie。基本上,如果會話中存在具有指定名稱「foo」的cookie,請不要執行任何操作。如果不存在cookie,則創建一個名爲foo的新cookie,並使用guid填充它。我怎麼能在JavaScript中做到這一點?在本地主機上創建cookie

謝謝

回答

0

從JavaScript讀取cookies需要一點字符串解析。有一些好的庫,使這一工作更容易,但你可以使用類似的代碼下面的獲取和設置cookie值

<script type="text/javascript"> 
    function GetCookieValue(key) { 
     var value = null; 
     var cookieArray = document.cookie.split(';'); 
     for (var i = 0; i < cookieArray.length; i++) { 
      var keyValuePair = cookieArray[i].split("="); 
      if (keyValuePair[0] == key) { 
       value = keyValuePair[1]; 
       break; 
      } 
     } 
     return value; 
    } 

    function SetCookieValue(key, value) { 
     document.cookie = key + "=" + value; 
    } 
</script> 

在JavaScript生成一個GUID是有點困難。 This guy有一個很好的庫,你可以包括這將生成良好的GUID。我知道也有一些jQuery插件是用類似的目的創建的,但我沒有用過它們。

如果您包含以下腳本以及上面的功能,它應該做你想做的。

<script type="text/javascript" src="http://www.broofa.com/Tools/Math.uuid.js"></script> 
<script type="text/javascript"> 
    var guid = GetCookieValue("myGuid"); 
    if (guid == null) 
     SetCookieValue("myGuid", Math.uuid()); 

    alert(GetCookieValue("myGuid")); 
</script> 
+0

document.cookie的問題在於我的本地主頁上沒有設置cookie。相反,我正在調用一個外部域,它設置了我想要檢查的cookie。所以我實際上正在調用一個域名,比如google.com,它在其自己的域名下設置了它的cookie。當我查看ff中的cookie列表時,我可以看到這一點。該Cookie設置在google.com(例如)下。我想檢查是否存在 – 2012-04-03 15:52:19

+1

Javascript不允許你從其他域訪問cookie。這是一個安全風險。 – dave 2012-04-03 16:03:10