一段时间后,使用javascript的Cookie集在IE 10 / IE 8中消失

时间:2013-08-19 12:52:26

标签: javascript internet-explorer cookies internet-explorer-10

//http://www.quirksmode.org/js/cookies.html
function createCookie(name,value,days) {
    var expires = "";
if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
            expires = "; expires="+date.toGMTString();
}
document.cookie = name+"="+value+expires+"; path=/";
}

我正在尝试使用上面的函数在页面加载时创建cookie。并尝试使用IE 10的javascript控制台中的以下代码来观察cookie值。

function setCookieAndTrack () {
    createCookie ('test', 'someValue', 99);
    var test = 0;
    setInterval(function () {
            console.log('document.cookie -- ', document.cookie, " - ", test++, " - ", (new Date()).getTime());
    }, 1000);
}

然后在体载上调用上面的函数

<body onload="setCookieAndTrack();">

这是我在没有任何缓存文件的情况下启动IE 10时获得的响应。

document.cookie -- test=someValue - 0 - 1376957958770 
document.cookie -- test=someValue - 1 - 1376957959753 
document.cookie -- test=someValue - 2 - 1376957960751 
document.cookie -- test=someValue - 3 - 1376957961749 
document.cookie -- test=someValue - 4 - 1376957962747 
document.cookie -- test=someValue - 5 - 1376957963746 
document.cookie -- test=someValue - 6 - 1376957964760 
document.cookie --  - 7 - 1376957965744 
document.cookie --  - 8 - 1376957966757 
document.cookie --  - 9 - 1376957967755 
document.cookie --  - 10 - 1376957968769 
document.cookie --  - 11 - 1376957969752 
document.cookie --  - 12 - 1376957970766 
document.cookie --  - 13 - 1376957971764 
document.cookie --  - 14 - 1376957972747 
document.cookie --  - 15 - 1376957973761 

事情是,这只会在浏览器重新启动时发生。刷新页面后,cookie值不会消失。

我在Windows 7(64位)上使用IE 10(10.0.9200.16660)。我也用其他IE版本观察过这个。

我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:3)

给它一个 - 尝试编码该值并使用UTCString代替。根据MDN,应使用toUTCString:https://developer.mozilla.org/en-US/docs/Web/API/document.cookie

它实际上是在文档中说GMT字符串,但随后会将您引导至UTC。

function createCookie(name,value,days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires="+date.toUTCString();
    }
    document.cookie = name+"="+encodeURIComponent(value)+expires+"; path=/";
}