localStorage / sessionStorage和cookie之间的浏览器行为不同

时间:2010-12-13 17:07:45

标签: javascript session cookies local-storage

这不是一个技术问题,而是一个实践问题:浏览器存储似乎没有与cookie相同的浏览器行为。

例如:

  • 在Firefox 3.6中,不在同一浏览器会话中的选项卡之间共享sessionStorage。
  • localStorage永远不会设置为过期,而sessionStorage永远不会存在。

  • 如果网站使用Cookie进行会话,则会在标签之间共享。

  • 如果Cookie设置为过期,则会在某个日期之后过期。

有意义的是它不像“喜欢”,但这意味着我们可能需要根据需要混合和匹配我们的变量存储解决方案。您对双方的利益/陷阱的想法和意见将不胜感激。

背景: 在我们目前正在开发的网站上,我们决定使用浏览器存储(sessionStorage和localStorage)以及cookie后备来实现渐进增强。我们这样做的原因仅仅是作为一种学习练习,但是向前推进这应该有助于我们在移动平台和cookie无法使用的情况下(我们已经将我们的资产存储在cookie-less domain上,所以这不是一个动力)。

为此,我们创建了一个具有set,get,remove和clear方法的类,这些方法将应用程序变量存储在JSON字符串中(这允许我们对层次结构中的值进行分组)。对于没有JSON解析器的浏览器,我们使用Crockfords JSON plugin

在运行时,如果用户的浏览器支持浏览器存储,则存储类将运行,否则将函数设置为写入cookie。由于已经突出显示的不一致(以及我不知道的其他内容),这种“喜欢喜欢”渐进式增强实际上是错误的。

编辑:另一个浏览器模糊:如果IE 8在IE 7标准模式下运行,它支持localStorage和sessionStorage,其中独立IE 7不会(!)。

0 个答案:

没有答案