2011-09-14 37 views
0

我必须在2个Cookie字典/键控cookie中存储用户的偏好,以隐藏应用中每个表单的某些部分。JavaScript无法在ie7中获取/设置Cookie

看来IE7已经达到了javascript中Cookie 的数量或大小的一些限制。

我的意思是,饼干只在客户端JS无法访问,但可以在我们的asp.net/vb读就好了代码隐藏。

需要读取这些cookie的值必须在客户端,因为我不能运行回传的功能,每次的功能需要更新的cookie。

我应该如何获取和设置cookie而不触发回发?我考虑将cookie onload的值存储在文本框中,但我不知道什么时候会读取它并更新cookie。

回答

3

替换答案,因为前一个不适用,而且评论过长。

您仅限于总共4KB的Cookie数据每个域名取决于浏览器。

RFC规定的浏览器需要支持至少20个Cookie(IE浏览器50),以及他们需要支持至少4KB。

然而,可悲的事实是,大多数浏览器把4KB作为上限。因此,对于可能被“疯狂”使用的应用程序,这些cookie中所有数据的总和不应超过4KB。

此外,4KB显然是主观的,因为一些浏览器把这意味着4095字节。奇怪的一个。

无论如何,当前版本的Chrome和Firefox没有这个上限。 IE 9上限为每个域10,234字节,每个cookie 5,117(另一个奇数);然而,Opera和Safari仍然在过去。再次,如果您正在测试IE,Firefox甚至Chrome的旧版本,那么您也会遇到4KB的限制。

就个人而言,我认为,如果你的cookies是大于4KB,那么你可能有一些设计问题,你现在把更多的压力,你有最微小的连接上:在浏览器和服务器之间。如果您需要更多的数据,那么您可能需要设置本地缓存服务器,将数据嵌入到页面中,或者至少重新考虑您使用的Cookie。

一个有趣的链接:http://browsercookielimits.x64.me

+0

我必须补充说,这个工作起来,直到我们刚刚添加一个新的cookie密钥块。如果我删除该块,它会再次开始工作。它与长度有关。 – Lactose

+0

@Lactose:IE遵循RFC指南,将其限制为50个Cookie,每个Cookie最多4KB。如果你超出了这个范围,我会说你有一个设计问题:support.microsoft.com/kb/306070和support.microsoft.com/kb/941495/en-us – NotMe

+0

做一个cookie key:ie:Response。Cookie(“Cookie”)(“key1”)计入该限制?所以Cookie“Cookie”有两个键,那么这个数字是1或2个Cookie? – Lactose

0

至于设置和读取它们,检查出的jQuery插件处理饼干:

http://plugins.jquery.com/project/Cookie

如果您使用插件来设置他们,他们将是可读的。

+0

我其实也试过,它也读取为空,但我喜欢它的语法。也许我会在我想出来的时候使用它... – Lactose