在客户端存储Javascript变量

3

不是重复问题:我已经看过很多类似的问题,最终的答案总是“使用PHP或服务器端技术,并注意注入/数据操作”。

我想在客户端存储简单的东西(保存和加载),比如Google地图位置,并希望它在页面刷新之间保持不变。

我不想使用PHP或任何服务器端技术。

我该怎么办?

谢谢。

8个回答

4

我使用了localStorage作为jQuery插件:https://github.com/medialize/jQuery-store。谢谢! - Matthieu Napoli

2

2

在客户端存储数据的多种选项 - IndexedDB、localstorage、webSQL、SessionStorage、Cookies等。

IndexedDB

  • 可以高效查询数据,没有大小限制(但是容量或磁盘驱动器限制了大小)
  • 以键-对象格式存储
  • 不支持safari浏览器
  • 支持查询
  • 异步操作

localstorage

  • 以键值对格式存储值(值应始终为字符串)
  • 同步操作
  • 如果需要存储少量数据,则很有用
  • 大小受限(取决于浏览器)

Session Storage

  • 如果用户关闭标签页,则会清除数据

您可以在此处检查YDN-DB(链接)


1

你必须牢记的关键问题是不能信任客户端。如果客户端请求任何位置都可以,那么在客户端存储位置就没有问题。但是你无法确认从客户端得到的值是否是你提供给该客户端的值。

这就是“数据操纵”的意思[注入是数据操纵的一种特殊形式,因为它被操作以包括像 SQL 查询或其他脚本中的结束引号标记之类的内容。]


当然,但我从未得到过位置!那只是一个静态网页...他们可以随心所欲地处理脚本及其变量。 - Matthieu Napoli
我同意你的观点,Matthieu。你想要存储的数据是可以存储的。我不确定为什么人们对本地存储数据如此紧张。除非它像密码、银行密码或超过5MB(由于目前的技术限制),否则这真的无关紧要。反正最坏的情况又会怎样呢? - Oscar Godson

1

我强烈建议使用localStorage,原因如下:

  1. 它被现代浏览器支持,包括IE。
  2. 您可以存储高达5MB的数据(在IE中为10MB),而cookie仅为4KB。
  3. 有许多库可使此过程变得简单。其中最受欢迎的之一是LawnChair:http://westcoastlogic.com/lawnchair/。这实际上会写入多个位置,包括cookie,以便数据不易丢失。

另外,请注意,您无法像使用cookie一样存储对象,但是您可以将它们转换。例如,如果要存储Date(),请勿将其存储为new Date(),而应将其存储为:'\'+Date().getTime()+'\'。其他对象也是同理。


0

0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接