2010-01-04 270 views
9

我构建可移植的HTML/Javscript原型,这些原型旨在通过电子邮件/共享点进行压缩和共享。这里的关键词是'便携式' - 不需要服务器来运行这些原型 - 只是一个支持JavaScript的浏览器。没有数据库。Cookie的替代方案

一些原型需要我坚持数据(只是为了炫耀潜在的功能)。我目前通过使用cookie来做到这一点。这似乎对Firefox,Chrome等工作正常,但Internet Explorer似乎工作不同。

一旦来自域的所有cookie的最大大小为4096字节在IE6和7中打开(我还没有测试过8),cookies就停止工作。一旦这个限制被打中,那么即使从cookie中读取似乎停止发生并且原型中断。

有没有其他的方法可以保存数据而不必使用服务器和数据库?

任何想法将不胜感激。

回答

6

将数据存储在隐藏字段中(如果需要,甚至可以存储多个数据)。

将用于从cookiees中读取的代码封装到单独文件中的类/函数中,然后您可以轻松地将这些文件交换出来用于实况/样本实例 - 就像注释掉一行一样容易,并取消其他评论。

编辑DUE TO请求COMMENT: 这将跨越多个页面的工作,只要你在多个页面推入隐藏字段中的数据。如果您不希望从一页到另一页执行POSTS,则可以将页面包装到一个框架中,然后将隐藏字段放在未显示的框架元素中(在这种情况下,领域在技术上不需要被隐藏)。

这是什么,被访问的页面有一个FRAME标记,指向两个不同的页面。第一页是你的应用程序本身,并占用所有可见的房地产。第二页只是一个页面,它将保存一个或多个将保留数据的控件,而第二个页面根本不可见(给用户)。由于这些页面都是同一个“域”的一部分,因此框架子代与其兄弟之一进行对话并将数据读取/写入隐藏页面的域是一件容易的事情。

而且这种方式得到解决cookie的限制是文本输入域在技术上只受到计算机内存和网络吞吐量超时的限制,例如,我已经看到一个隐藏的域,其中有20MB的数据在其中(例如,邪恶ViewStates)。

+0

嗨斯蒂芬。谢谢回复。我正在努力想方设法解决这个问题。你能稍微扩展一下吗?这是否可以在多个页面上工作,以及如何解决Cookie限制问题? – Sniffer 2010-01-04 16:33:48

+0

我喜欢它!感谢澄清。我通常不使用框架,但在这种情况下它是有意义的(直到HTML 5获得更多的观众)。毕竟这只是用于原型设计。再次感谢。 – Sniffer 2010-01-04 18:31:21

5

虽然目前还没有广泛使用,但有HTML5 webstorage/localstorage。

+0

不幸的是,该解决方案需要适用于所有主流浏览器。我无法强制客户使用特定的或升级到最新的浏览器。 – Sniffer 2010-01-04 16:10:16

+0

@Sniffer:我明白你的立场。干杯。 – jldupont 2010-01-04 16:24:01

5

退房YUI Storage

+0

有趣。我会研究这个,虽然我通常使用jQuery库,所以更愿意使用这个jQuery版本(如果有的话)。 – Sniffer 2010-01-04 16:29:16

+0

看起来像有一些jQuery选项。不知道他们有多成熟。 http://stackoverflow.com/questions/791412/offline-data-storage-access-using-jquery – Chris 2010-01-04 16:45:32

3

Dojo Storage可以让你节省高达100K

+0

有趣。我会研究这个,虽然我通常使用jQuery库,所以更愿意使用这个jQuery版本(如果有的话)。 – Sniffer 2010-01-04 16:28:39

+0

如果没有jQuery版本,您应该只能使用Dojo子集来获取存储功能。你应该能够继续在你的大部分编程中使用jQuery。 注意事项:我从来没有亲自在同一个应用程序中混合使用jQuery和Dojo。 – 2010-01-04 16:49:27

0

有关HTML5存储API的情况已经有所改善,因为这是由jldupont here提出的,并且最初得到了回​​答。

目前Opera Mini是唯一不支持它的主流浏览器。

Source,访问22/8/2013。