通过后退按钮返回时会持续什么?

时间:2012-10-04 21:24:32

标签: javascript jquery html css

我知道当您通过后退按钮返回页面时,仍会选中一个复选框。但是,使用jquery的addClass添加的类不会。当有人通过后退按钮返回时,有人可以帮助我了解什么时候会持续存在吗?另外,有没有办法保存变量的值,以便我可以使用变量值来重新创建不存在的对象?

4 个答案:

答案 0 :(得分:14)

没有持久存在 - 类不会持久化,因为DOM被重新生成,JS变量不会因为代码被重新执行等而持久存在。同时,浏览器实现似乎非常同意为方便起见,请保留用户输入的表单数据,即使此行为不属于任何官方规范。

如果您需要在客户端保留一些数据 - 您可能在架构上做错了什么。为什么要尝试覆盖浏览器“后退”按钮行为以使用户恢复到任意状态,而不是转到先前的URL并重新呈现页面?如果你的应用程序很重要并且需要这种“后退”按钮行为,你可能想要避免让用户在独立页面之间导航以支持发出AJAX请求并依赖html5 history api之类的东西来允许你执行任意代码以使页面进入所需状态。

您没有详细了解您实际期望存储的内容 - 可能localStorage或Cookie替代方案更合适

更新

我已经将a fiddle放在一起测试表单数据在遍历历史记录时的持续性,以及隐藏字段 可供JS处理 - 尽管imo仍然不是一个好主意

答案 1 :(得分:2)

现代浏览器试图越来越多地坚持下去。 Firefox几年前尝试保留包括类名更改在内的所有内容,只要服务器指示页面在HTTP标头中可缓存且网页未注册任何onunload事件处理程序。当用户按下时,Firefox会激活onpageshowonpagehide

https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching https://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/

答案 2 :(得分:1)

这几乎取决于你处理或不处理网址的事实,即如果你这样做,你可以坚持一切。

编辑:

您必须熟悉单页面应用程序(SPA)的概念。

这要归功于能够更改location hash property并管理浏览器历史记录。

为了简化这一过程,有很多像Sammy.js

这样的库

每次有用户执行操作时,您都会按下新状态,因此您可以按下后退按钮。

为了了解其外观,请查看以下jsfiddle

在您看到的设置routes

的代码中
Sammy(function() {
    this.get('#:folder', function() { ... });
    this.get('#:folder/:mailId', function() { ... });
})).run();

指定哈希值,即www.mygreatwebsite.com/#inbox/#1以及您的应用将如何处理它。

此处还有更多内容,所以我的链接只是您探索的起点。

已编辑:much simplier example of using sammy.js

答案 3 :(得分:0)

补充上述答案,您可以使用viewstate保存表单状态。

ViewState允许ASP.NET在每次回发时将表单字段重新填充到服务器,确保在用户点击提交按钮时不会自动清除表单。