后退按钮不是在ajax站点上重新加载页面

时间:2014-03-24 21:55:21

标签: javascript jquery html ajax

我已将AJAX添加到客户端网站,以启用页面转换的一些简单动画。因此,如果我们在firedogcreative.com上导航到他的主页(启用了js),然后导航到他的编辑页面,然后导航到他的一个工作页面;我们最终得到了这样的历史:

firedogcreative.com --> firedogcreative.com/#edit --> firedogcreative.com/#example1

Ajax负责加载每个页面的内容,它会在每种情况下更新URL栏中的哈希值,并且所有页面都按计划完成。

但是,当用户点击后退按钮时,我不确定我是否理解发生了什么。如果它们位于#example1并点击浏览器的后退按钮,则网址栏会更新为firedogcreative.com/#edit,但页面内容不会更改。但是,如果用户重新加载页面,则会正确地重新加载到#edit

我尝试添加这个,我认为这会导致页面不会缓存,因此每个后退按钮调用都会重新加载页面,但它似乎没有效果:

window.onbeforeunload = function () {
   // stuff do do before the window is unloaded here.
};

如果有效,那将是一个可以通过的解决方案。当用户使用前进/后退按钮时,该页面只会实际重新加载,这很好。

所以我的问题是,后退按钮发生了什么?不应该onbeforeunload导致后退按钮根据存储的URL重新加载吗?

1 个答案:

答案 0 :(得分:1)

  

所以我的问题是,后退按钮发生了什么?

它将返回上一个网址。

由于更改片段标识符以跟踪应用程序状态是一种黑客攻击,因此不会发生任何其他事情。

  

不应该onbeforeunload导致后退按钮根据存储的URL重新加载吗?

没有。您正在同一文档中导航回来,因此没有被卸载。

您需要监控hashchange event并使用自己的JS更改应用程序状态。

或者,切换为使用pushState并观看popstate event