浏览器后退按钮后刷新网页?

时间:2011-09-30 16:40:11

标签: javascript jquery

首先让我说我不想“禁用”或以其他方式妨碍正确使用浏览器历史记录按钮。

我需要的是一个基于javascript的程序(跨浏览器兼容,希望)在使用后退/前进按钮导航到它后刷新网页(保持相同的URL)。这是必要的,因为在此过程中服务器会跟踪用户的位置/页面,如果用户想要跳回3页,我需要通过重新加载页面来“通知”服务器新位置(或者是否有更好的位置)这样做的方法?)我已经通过HTTP标头禁用了缓存,但这对后退/前进历史记录不起作用,至少在Firefox 7中是这样。

使用jQuery当然是可以接受和可取的。我环顾四周,发现了大约$(文件).ready()。现在,请记住我是一个完整的javascript noob。我没有经验,jQuery也是如此(我知道它的作用,我看过文档,但就是这样)。所以我试图理解它是如何工作的,但提到这种方法的页面似乎假设webdeveloper想要从中修改DOM,并且当你想要这样做时(加载顺序和东西)有一些怪癖。因为在我的情况下我只需要刷新,所以应该更容易。所以:

  • 据我所知,这不仅会在您浏览时运行,而且每次加载页面时都会运行。我怎样才能确保我最终没有无限循环?我希望它在我浏览时运行一次,但在加载后,在自动刷新后或其他情况。在正常负载下,我宁愿不让它运行,因为用户必须每次下载两次页面,这是愚蠢的!

  • 或者有更好的方法吗?还有其他想法吗?小心解释或指出我正确的方向?

编辑:我只需要兼容:
Internet Explorer 8或更高版本
Firefox 4或更高版本
最近的Chrome / Safari(我没有跟踪版本号,但为什么有人不使用最新的Chrome?)

2 个答案:

答案 0 :(得分:1)

我遇到此问题的最佳解决方法是使用location.replace(),like so

它没有直接解决我原来的问题;但是,由于这似乎没有解决方案(目前),我建议每个人都使用此客户端功能来保护他们不希望客户端使用后退按钮再次执行的服务器端页面。我确信这在stackoverflow的其他地方有更好的解释,但对于少数人使用我复杂的思维方式来解决问题,你就有了它。

答案 1 :(得分:0)

它有点滥用,但其中一种方法是让你的“进入下一步”按钮作为POST的表单。例如;

而不是

<a href = "#foo">Proceed to next Page</a>

你有

<form action = "foo" method = "POST"><input type = "submit" value = "Proceed to next page" /></form>

如果用户回击,他们将被迫重新将数据发送到服务器,您的页面将被刷新。这对用户来说可能真的很烦人!

但正如我所提到的,主要滥用表格!

编辑:这种滥用仅适用于某些情况,但您最好判断它是否合适。