当浏览器刷新按钮被点击时,如何避免变量丢失。

10

当页面重新加载时,是否可能保留我的(全局)变量?如果是,如何实现?

感谢任何帮助。 最好的问候。


1
抱歉如果我表达不清,但是你的术语似乎不是标准的。关于“全局数组变量”,有什么可以防止的吗?此外,“浏览器重置按钮”是什么? - Adam Wright
你有一些代码可以说明你所指的吗? - Russ Cam
抱歉...你是对的,我是指“防止初始化值或重置”。换句话说,我想保护我的全局值并在下一步操作中使用它。 谢谢。 最好的问候。 - Yusuf Akyol
抱歉我的英语不好,希望现在清楚了。 - Yusuf Akyol
6个回答

9
尝试使用此无需cookie的JavaScript函数。它基本上将您的数据存储在window.name属性中,该属性在重新加载页面或转到另一个站点时不清除值。

我喜欢这个。但是,我在想它是否符合适当的软件设计或者会被归类为黑客行为? - Adam

4

非常感谢Kangax...这很有趣。哪些浏览器是基于Webkit的? - Yusuf Akyol
ABrowse,Android的Web浏览器,Arora,Google Chrome,Epiphany,iCab,Iris Browser,Midori,OmniWeb,rekonq,Safari,Shiira,Skipstone,Sputnik for MorphOS,SRWare Iron,Stainless,Sunrise,TeaShark,Web Browser for S60,WebOS :)(请参见http://en.wikipedia.org/wiki/List_of_web_browsers#WebKit-based_browsers) - kangax

3

你可以使用相同的方法在哈希键中存储字符串值。

使用以下属性:

window.location.hash = 'flight/105';

然后当刷新页面时,您可以重新初始化您的变量。


2
当浏览器离开您的页面时,JavaScript环境将被重置。但是,您可以注册一个onUnload处理程序将您的数组序列化为cookie,然后每次加载页面时检查它是否存在并进行反序列化。

嗨,亚当, 当浏览器重置按钮被按下时会发生什么? - Yusuf Akyol
我尝试解决这个问题,而不使用cookie。 - Yusuf Akyol

1
你的浏览器有重置按钮吗?还是你指的是刷新按钮?
当页面加载时,所有内容都是新加载的。没有任何来自以前页面的残留物。唯一可以存储在页面加载后仍然存在的地方是cookie。
请注意,每个站点可以放入cookie的数据量限制为几千字节。确切的限制因浏览器而异,但您不能期望能够将超过一到两千字节的数据放入cookie中。

是的,重新加载按钮...非常感谢Guffa...最好的问候。 - Yusuf Akyol

0

你是在谈论Cookies吗?如果是的话,你可能想要查看这个开源模块

这将轻松地允许你存储Cookies,也就是数据,即使在浏览器重新加载后。这使得操作变得非常容易,而且这也是我使用的方法。

var cookie = new HTTP.Cookies();
cookie.write('mydata', 'myvalue', '+1y');

//later on you can get that data EVEN AFTER a reload
var x = cookie.read('mydata');

虽然从头开始制作Cookie实现可能非常痛苦,而且您必须在各种Web浏览器上进行大量测试,例如确保Internet Explorer正常工作,但您最好不要尝试。


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