2012-04-03 145 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