我已将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重新加载吗?
答案 0 :(得分:1)
所以我的问题是,后退按钮发生了什么?
它将返回上一个网址。
由于更改片段标识符以跟踪应用程序状态是一种黑客攻击,因此不会发生任何其他事情。
不应该onbeforeunload导致后退按钮根据存储的URL重新加载吗?
没有。您正在同一文档中导航回来,因此没有被卸载。
您需要监控hashchange event并使用自己的JS更改应用程序状态。
或者,切换为使用pushState并观看popstate event。