Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让JS变量在页面刷新后保留值?_Javascript_Html - Fatal编程技术网

Javascript 如何让JS变量在页面刷新后保留值?

Javascript 如何让JS变量在页面刷新后保留值?,javascript,html,Javascript,Html,是否可以永久更改javascript变量?如中所示,如果我设置变量X并使其等于1。然后单击一个按钮,将该变量更改为2。如何使该变量在页面刷新时保持在2?您必须使用cookie在页面刷新时存储该值。您可以使用许多基于javascript的cookie库中的任何一个来简化cookie访问,如 如果您只想支持html5,那么您可以考虑使用类似api的api/ 例:使用及 这可以通过window.localStorage或window.sessionStorage实现。不同之处在于,sessionSto

是否可以永久更改javascript变量?如中所示,如果我设置变量X并使其等于1。然后单击一个按钮,将该变量更改为2。如何使该变量在页面刷新时保持在2?

您必须使用cookie在页面刷新时存储该值。您可以使用许多基于javascript的cookie库中的任何一个来简化cookie访问,如

如果您只想支持html5,那么您可以考虑使用类似api的api/

例:使用及


这可以通过
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
    -
  • 浏览器存储兼容性-
  • 储存物品-

您可以通过在客户端存储Cookie来实现这一点。

除了Cookie和
本地存储
,至少还有一个地方可以存储“半永久性”客户端数据:
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");