我正在使用(客户端)cookie(在javascript中)将用户选择的键/值对从一个会话存储到下一个会话以及从一个页面到另一个会话。似乎Chrome,Safari和Firefox都知道密钥只能有一个值,但IE会采用不同的视图。 例如: 我有一个功能(“viewMode”),可以使用四个用户可选值之一:-2,-1,0或1。 当我设置cookie时,我给它一个到期日为+ 100天。
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存储BOTH值,但其他人理解密钥被覆盖的概念。 这是下一次加载的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”出现两次,一次是viewMode = 0,一次是viewMode = 1。 所以...是一个cookie真的是一个键/值对,IE错了,或者是什么? 我看过帖子表明cookies是关键/值/日期三倍,但在其他地方似乎没有支持,我在W3C doco中找不到规格。
答案 0 :(得分:0)
这不是答案,但我的问题通过解决方法得到解决! 我甚至试图通过
删除viewMode cookiedocument.cookie="viewMode =; expires=15/02/2003 00:00:00";
没有任何成功。
令人恼火的是,我删除了所有IE浏览器,现在一切正常!
似乎“viewMode = 1”cookie是某种怪物(“Cookie Monster”得到它哈哈),它没有响应被更改或删除。 现在我的页面很乐意按预期更新viewMode cookie。
所以我有一个解决方法,但我仍然想知道真正发生了什么。