0

(クライアント側) Cookie (javascript) を使用して、ユーザーが選択したキーと値のペアをセッション間およびページ間で保存しています。Chrome、Safari、および Firefox は、キーが 1 つの値しか持てないことを理解しているようですが、IE は別の見方をしています。例: ユーザーが選択できる 4 つの値 (-2、-1、0、または 1) のいずれかを取ることができる機能 (「viewMode」) があります。 .

function setCookie(c_name, value, expireDays) {
    expireDays *= 1;
    var expireDate = new Date();
    expireDate.setDate(expireDate.getDate() + expireDays);
    var c_value = escape(value) + ((expireDays == null) ? "" : "; expires=" + expireDate.toUTCString());
    document.cookie = c_name + "=" + c_value; 
}

デフォルト値は 0 です。ユーザーが値 (1 など) を選択すると、呼び出しが生成されます。

setCookie("viewMode", 1, 100); 

IE は両方の値を保存しますが、他のものはキーが上書きされたという概念を理解しています。次にロードするための HTTP GET の Cookie コンポーネントは次のとおりです。

Cookie: dispText=FileName; viewMode=0; MultiTrack=0; showClouds=0; smokeTrailLength=256; IGCAltSource=0; HideTracks=0; ColorSpeed=1; showCompass=0; viewMode=1; chosenDirectoryPath=C%3A%5CAlan%5CSTarTraXdata%5CTestTracks; IGCAltSource=1; showCockpitInstruments=0; showJavaOPenPopup=0; dispText=None; smokeTrailLength=-1; PHPSESSID=d96b0827725b1e6e313dcdfddfaed0a0

ご覧のとおり、Cookie「viewMode」は 2 回表示されます。1 回は viewMode=0 として、もう 1 回は viewMode = 1 として表示されます。つまり、Cookie は実際にはキーと値のペアであり、IE はそれを間違っていますか? Cookie がキー/値/日付の 3 つ組であることを示唆する投稿を見たことがありますが、それは他の場所ではサポートされていないようで、W3C doco で仕様を見つけることができません。

4

1 に答える 1

0

それは答えではありませんが、私の問題は回避策で解決されます! 私はviewMode Cookieを削除しようとさえしました

document.cookie="viewMode =; expires=15/02/2003 00:00:00"; 

成功せずに。

憤慨して、すべての IE Cookie を削除したところ、すべてが正常に機能するようになりました。

「viewMode=1」Cookie は、変更または削除されても応答しないある種のモンスター (「Cookie Monster」はハッハッハッハッハ) だったようです。現在、私のページは正常に viewMode Cookie を更新しています。

回避策はありますが、実際に何が起こっているのか知りたいです。

于 2012-08-07T00:58:57.213 に答える