首页 新闻 赞助 找找看

IE7下面如何通过JS设置cookie?

1
悬赏园豆:15 [已关闭问题]

今天碰到个搞怪的问题,用javascript修改cookie。

从网上抄了一段代码

function GetCookieVal(offset)
//获得Cookie解码后的值
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr
= document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie(name)
//获得Cookie的原始值
{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return GetCookieVal(j);
i
= document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function SetCookie(name, value, expires, path, domain, secure) {
document.cookie
= name + "=" + encodeURI(value) +
((expires)
? "; expires=" + expires : "") +
((path)
? "; path=" + path : "") +
((domain)
? "; domain=" + domain : "") +
((secure)
? "; secure" : "");
}

 

写了个测试

var name = "btq";

var c = GetCookie(name);
if (c != null)
alert(
"old cookie = " + c);
else {
alert(
"new cookie");
var d = new Date();
d
= d.setTime(d.getTime() + 3600);
SetCookie(name,
"测试时间:" + (new Date()).getTime(), d,"/","zq88.net");
}

结果在FF和谷歌浏览器上正常,第1次显示new cookie,以后就是old cookie~

但是到了IE7下面就完蛋了,都是显示new cookie,原因是IE7下面document.cookie是只读的。

我找了W3C和JScript的资料,但都没有找到相应的替换办法,只好来这儿找高人赐教了 -_-b

哪位兄弟解决过此问题的,请帮帮忙,先谢啦~

问题补充: 测试代码好像显示不正常,再贴一次。 var name = "btq"; var c = GetCookie(name); if (c != null) alert("old cookie = " + c); else { alert("new cookie"); var d = new Date(); d = d.setTime(d.getTime() + 3600); SetCookie(name, "测试时间:" + (new Date()).getTime(), d,"/","zq88.net"); }
B.T.Q的主页 B.T.Q | 初学一级 | 园豆:190
提问于:2010-01-09 15:25
< >
分享
其他回答(1)
0

IE7下的cookie是只读的么?

你的原因是在于你设置过期时间太少,setTime是以毫秒为单位的(3600ms=3.6s)。你改成

d = d.setTime(d.getTime() + 36000);
SetCookie(name, "测试时间:" + (new Date()).getTime(), d.toString(),"/","zq88.net");

试试,就可以了。。

阿松 | 园豆:601 (小虾三级) | 2010-01-10 23:12
0

3600毫秒一瞬间就过期了,多加两个0吧,哈哈。

成斌 | 园豆:265 (菜鸟二级) | 2010-01-12 08:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册