首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让JS变量在页面刷新后保值?

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

Stack Overflow用户
提问于 2013-04-25 12:20:24
回答 3查看 262.5K关注 0票数 139

有可能永久改变javascript变量吗?例如,如果我设置变量X并使其等于1,则按钮的onClick将该变量更改为2。如何才能使该变量在刷新页面时保持为2?

EN

回答 3

Stack Overflow用户

发布于 2013-04-25 12:40:44

除了cookies和localStorage之外,至少还有另外一个地方可以存储“半持久化”客户机数据:window.name。分配给window.name的任何字符串值都将一直保留到窗口关闭。

要对其进行测试,只需打开控制台并键入window.name = "foo",然后刷新页面并键入window.name;它将以foo作为响应。

这是一个小技巧,但如果您不希望每次请求都将充满不必要数据的cookies发送到服务器,并且无论出于何种原因(遗留客户端)都不能使用localStorage,那么可以考虑使用cookie。

window.name还有另一个有趣的属性:它对从其他域提供服务的窗口是可见的;它不像window的几乎所有其他属性一样受到同源策略的约束。因此,除了在用户导航或刷新页面时将“半持久化”数据存储在那里之外,您还可以将其用于无CORS的跨域通信。

注意,window.name只能存储字符串,但是随着JSON的广泛使用,即使对于复杂的数据,这也不是什么大问题。

票数 30
EN

Stack Overflow用户

发布于 2013-04-25 12:22:20

您将不得不使用cookie来存储跨页面刷新的值。您可以使用许多基于javascript的cookie库中的任何一个来简化cookie访问,如this one

如果您只想支持html5,那么您可以考虑像localStorage/sessionStorage这样的Storage api

示例:使用localStoragecookies library

代码语言:javascript
复制
var mode = getStoredValue('myPageMode');

function buttonClick(mode) {
    mode = mode;
    storeValue('myPageMode', mode);
}

function storeValue(key, value) {
    if (localStorage) {
        localStorage.setItem(key, value);
    } else {
        $.cookies.set(key, value);
    }
}

function getStoredValue(key) {
    if (localStorage) {
        return localStorage.getItem(key);
    } else {
        return $.cookies.get(key);
    }
}
票数 8
EN

Stack Overflow用户

发布于 2013-04-25 12:23:05

您可以通过在客户端存储cookie来做到这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16206322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档