1

我正在调试一个脚本,它基本上读取一个 cookie 并返回一些东西。它在所有浏览器中都能正常工作,除了 IE。经过一些测试,我发现它永远不会进入for循环。

function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');

  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);

    if (c.indexOf(nameEQ) == 0) {   
        return c.substring(nameEQ.length,c.length);
    }

  }
  return null;
}

经过更多测试,我意识到ca存储 cookie 的变量甚至从未被定义。看着它,我不明白为什么应该这样做,因为没有对 cookiename 的引用。所以在我的逻辑中,它甚至不应该工作,但它在除 IE 之外的所有东西中都能完美运行

var ca = document.cookie.split(';');  


1:为什么这甚至可以在 Fx、Webkit 和 Opera 中使用?
2:我怎样才能让它在IE中也能工作?


我尝试将其定义如下,但这似乎不起作用:

document.cookie = name;
4

1 回答 1

0

看来 IE 中没有设置 cookie。尝试使用

alert('d.cookie:\t'+document.cookie+'\n\n'+'d.cookie.length:\t'+document.cookie.length);

检查是否有任何 cookie。

书签

如果没有,请尝试使用设置一个

document.cookie='mycookie=foo; path=/';

书签

于 2012-06-13T12:18:39.583 回答