有没有一种方法可以在不同的页面之间存储 JavaScript 变量?比如,在页面 A 中,我设置了 window.someVar = 5
。然后通过在 A 中点击超链接移动到页面 B,并执行像 alert(window.someVar)
这样的操作——我应该能够得到一个显示 5 的消息框。是否有一种技术可以将 someVar
持久化呢?
有没有一种方法可以在不同的页面之间存储 JavaScript 变量?比如,在页面 A 中,我设置了 window.someVar = 5
。然后通过在 A 中点击超链接移动到页面 B,并执行像 alert(window.someVar)
这样的操作——我应该能够得到一个显示 5 的消息框。是否有一种技术可以将 someVar
持久化呢?
你可以使用窗口的名称 window.name
来存储信息。这被称为JavaScript 会话。但它只在同一窗口/标签页中有效。
location.hash
访问。 - Gumbo为了完整起见,还应该研究HTML5的本地存储能力和sessionStorage。这些在所有现代浏览器的最新版本中都得到支持,使用起来比cookie更容易且不容易出错。
http://www.w3.org/TR/2009/WD-webstorage-20091222/
https://www.w3.org/TR/webstorage/(第二版)
以下是一些使用sessionStorage和localStorage设置和获取值的示例代码:
// HTML5 session Storage
sessionStorage.setItem("variableName","test");
sessionStorage.getItem("variableName");
//HTML5 local storage
localStorage.setItem("variableName","Text");
// Receiving the data:
localStorage.getItem("variableName");
我建议您看一下这个库:
我非常喜欢它,它支持从cookie到HTML5存储、Gears、Flash等多种存储后端,使用起来非常透明,您无需知道或关心使用了哪个后端,该库会根据浏览器的能力选择正确的存储后端。
是的,可以使用Cookies实现。但要小心,不要放太多内容(我认为有4kb的限制)。但是一些变量是可以的。
如果需要存储的数据量远大于此,请查看@Annie在另一个答案中提供的绝佳技巧。对于小规模数据存储,我会说Cookies是最简单的东西。
请注意,Cookies被存储在客户端。
我推荐使用web storage。示例:
// 存储数据:
localStorage.setItem("变量名","文本");
// 获取数据:
localStorage.getItem("变量名");
只需将变量名
替换为您的变量名称,将文本
替换为您想要存储的内容。根据W3Schools的说法,它比cookies更好。
window.name
方法已经过时。 - Sebastian Simon