按下浏览器重新加载按钮时防止变量丢失[重复]
Posted
技术标签:
【中文标题】按下浏览器重新加载按钮时防止变量丢失[重复]【英文标题】:Prevent loss of variables when browser reload button is pressed [duplicate] 【发布时间】:2010-11-25 02:48:45 【问题描述】:重新加载页面时是否可以保留我的(全局)变量?如果是,怎么做?
感谢您的帮助。 最好的祝福。
【问题讨论】:
对不起,如果我很密集,但您的术语似乎不标准。关于“全局数组变量”可以防止什么?此外,什么是浏览器重置按钮? 你有一些代码来说明你指的是什么? 对不起......你说得对,我的意思是“防止初始化值或重置”。换一种说法;我想保护我的全球价值并在下一次运营中使用它。谢谢。最好的问候。 对不起我的英语不好。我希望现在很清楚。 【参考方案1】:试试这个cookie-less javascript function。
它基本上将您的数据存储在window.name
属性中,当您重新加载页面或转到另一个站点时,该属性不会清除该值。
【讨论】:
我喜欢这个。但是,我想知道它是否符合正确的软件设计,还是会被归类为 hack?【参考方案2】:您可以通过某些基于 WebKit 的浏览器提供的 window.localStorage
、window.sessionStorage
(专有的 Mozilla 扩展)或数据库抽象 (window.openDatabase
) 等方式在页面重新加载时保留数据。请参阅 this article on MDC 以获得对存储接口的精彩概述,并参阅 this WebKit article 了解他们的数据库介绍。
【讨论】:
非常感谢 Kangax... 这很有趣。哪些浏览器是基于 Webkit 的? ABrowse, 适用于 android 的 Web 浏览器、Arora、Google Chrome、Epiphany、iCab、Iris 浏览器、Midori、OmniWeb、rekonq、Safari、Shiira、Skipstone、Sputnik for MorphOS、SRWare Iron、Stainless、Sunrise、 TeaShark,S60 的 Web 浏览器,WebOS :)(见 en.wikipedia.org/wiki/…)【参考方案3】:在相同的样式中,您可以将字符串值存储在哈希键中。
使用属性:
window.location.hash = 'flight/105';
然后在刷新页面时初始化你的变量。
【讨论】:
【参考方案4】:当浏览器离开您的页面时,JavaScript 环境将被重置。但是,您可以注册一个 onUnload 处理程序来将您的数组序列化为一个 cookie,然后在每次加载页面时检查它并取消序列化(如果存在)。
【讨论】:
嗨 Adam,按下浏览器重置按钮时会发生什么? 我尝试在不使用cookie的情况下解决这个问题。【参考方案5】:您的浏览器是否有重置按钮,或者您的意思是重新加载按钮?
当页面加载时,所有内容都是全新加载的。任何前一页都没有留下任何东西。唯一可以存储在加载页面后幸存下来的任何内容的地方是 cookie。
请注意,您可以放入 Cookie 的数据量限制为每个站点几千字节。确切的限制因浏览器而异,但您不能期望在 cookie 中放入超过一千字节或两千字节的数据。
【讨论】:
是的重新加载按钮...非常感谢 Guffa...最好的问候。【参考方案6】:您是在谈论 Cookie 吗?如果是这样,您可能想查看this open-source module
这将允许您轻松存储 cookie,即数据,即使在浏览器重新加载点击之后也是如此。这使得它变得非常容易,这就是我使用的。
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,因为它非常痛苦,并且您必须跨网络浏览器进行大量测试,例如确保 Internet Explorer 正常工作。
【讨论】:
以上是关于按下浏览器重新加载按钮时防止变量丢失[重复]的主要内容,如果未能解决你的问题,请参考以下文章
servlet会话,注销后,按下浏览器的后退按钮时,再次显示安全页面[重复]
Rails 仅在生产时才在页面重新加载时丢失会话变量 current_user_id(React 16.13、Rails 6、Heroku)