2012-07-26 43 views
0

我正在尝试检测特定cookie“abc”的存在。我正在使用的代码是为什么不能使用此javascript工作?

var iterations = 0; 
var interval = setInterval(checkCookie, 1000); 
var cookie=getCookie("abc"); 
function checkCookie() { 
    iterations++;  
    if (iterations >= 3 || cookie !=null || cookie !="") 
     clearInterval(interval); 
    alert("Iteration " + iterations); 
} 

此代码的唯一问题是它没有检测到cookie的存在。 甚至当我更改cookie名称以一个已经exists.You可以检查出来这里http://jsfiddle.net/aMZj3/

+1

如错误控制台所示,没有函数'getCookie()'。你的意思是'checkCookie()'? – 2012-07-26 20:39:46

+2

我假设'getCookie()'取自http://stackoverflow.com/questions/4003823/javascript-getcookie-functions? – 2012-07-26 20:40:35

+0

事实上,没有'getCookie'这样的函数。你必须自己解析['document.cookie'](https://developer.mozilla.org/en/DOM/document.cookie),或者抓一个为你做这个的库。 – 2012-07-26 20:40:41

回答

0

只是一个注:据我所知,如果你在域D1下工作,那么你将无法读取由其他域D2设置的cookie。这意味着如果cookie由您正在工作的同一个域设置,您将能够读取cookie“abc”。

+0

我认为你可能是对的。如果D2在D1上设置cookie,那么D1可以读取cookie吗? – 2012-07-26 21:49:18

+0

因为这正是我的广告公司在我的用户计算机上设置Cookie的情况 – 2012-07-26 21:51:33

+0

域D2无法为域D1设置Cookie。您可以将所需信息传递给D1,同时从D2重定向到D1。让D1为自己设置Cookie。试试这个链接: http://stackoverflow.com/questions/6761415/how-to-set-a-cookie-for-another-domain – Somnath 2012-07-27 06:38:14

2

你只是在你的循环前一次打电话的getCookie,要将其移动到checkCookie函数来检查它的每个迭代。