0
//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 バージョンでも確認されています。

ここで何か不足していますか?

4

1 に答える 1

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=/";
}
于 2013-08-19T13:02:38.607 に答える