Javascript 如何让JS变量在页面刷新后保留值?
是否可以永久更改javascript变量?如中所示,如果我设置变量X并使其等于1。然后单击一个按钮,将该变量更改为2。如何使该变量在页面刷新时保持在2?您必须使用cookie在页面刷新时存储该值。您可以使用许多基于javascript的cookie库中的任何一个来简化cookie访问,如 如果您只想支持html5,那么您可以考虑使用类似api的api/ 例:使用及Javascript 如何让JS变量在页面刷新后保留值?,javascript,html,Javascript,Html,是否可以永久更改javascript变量?如中所示,如果我设置变量X并使其等于1。然后单击一个按钮,将该变量更改为2。如何使该变量在页面刷新时保持在2?您必须使用cookie在页面刷新时存储该值。您可以使用许多基于javascript的cookie库中的任何一个来简化cookie访问,如 如果您只想支持html5,那么您可以考虑使用类似api的api/ 例:使用及 这可以通过window.localStorage或window.sessionStorage实现。不同之处在于,sessionSto
这可以通过
window.localStorage
或window.sessionStorage
实现。不同之处在于,sessionStorage
只要浏览器保持打开状态,就会持续使用,localStorage
在浏览器重新启动后仍然有效。持久性应用于整个网站,而不仅仅是其中的一个页面
当需要设置应在下一页中反映的变量时,请使用:
在任何页面中(如加载页面时),获得如下内容:
var someVarName = localStorage.getItem("someVarKey");
.getItem()
如果未存储值或存储的值,则将返回null
请注意,此存储中只能存储字符串值,但这可以通过使用JSON.stringify
和JSON.parse
来克服。从技术上讲,无论何时调用.setItem()
,它都会对值调用.toString()
,并存储该值
MDN的DOM存储指南(链接如下)有变通方法/多填充,如果localStorage
不可用,最终会返回到cookies之类的东西
使用现有的或创建自己的小型库,抽象保存任何数据类型(如对象文本、数组等)的能力,这不是一个坏主意
参考文献:
- 浏览器
-存储
-localStorage
-JSON
- 浏览器存储兼容性-
- 储存物品-
本地存储
,至少还有一个地方可以存储“半永久性”客户端数据:window.name
。您分配给窗口的任何字符串值。name
将保留在那里,直到窗口关闭
要进行测试,只需打开控制台并键入window.name=“foo”
,然后刷新页面并键入window.name
;它应该用foo
响应
这是一个黑客攻击,但是如果你不想把不必要的数据用任何请求发送到服务器,如果你不能使用<代码> LoalSturt不管什么原因(遗留客户端),它可能是一个考虑的选项。
window.name
还有一个有趣的属性:它对其他域中提供服务的windows可见;它不像window
的几乎所有其他属性一样受同一原产地策略的约束。因此,除了在用户导航或刷新页面时存储“半持久”数据外,您还可以将其用于CORS自由跨域通信
请注意,
window.name
只能存储字符串,但由于JSON
的广泛可用性,即使对于复杂的数据,这也不应该是一个太大的问题。我看到您在这里偷偷摸摸……:)@伊恩:哈哈,接得好。我不知道为什么,但我有点着迷于window.name
我现在非常感兴趣!这听起来很熟悉,但我不确定我是否知道这个功能。我知道如何使用窗口设置名称
。打开
,但在我的场景中,该参数不能在选项卡或浏览器窗口中保留,只能在当前打开窗口中的页面调用中保留。为此,window.name非常适合<代码>本地存储在iOS设备中似乎无法在私人浏览模式下工作。Reference[@lan JSON.stringify没有保留我们的函数,我们如何解决这个问题?
var someVarName = "value";
localStorage.setItem("someVarKey", someVarName);
var someVarName = localStorage.getItem("someVarKey");