jquery 后退按钮无法在 AJAX 站点上重新加载页面

ztmd8pv5  于 2023-03-29  发布在  jQuery
关注(0)|答案(2)|浏览(112)

我在一个客户的网站上添加了 AJAX 来实现一些简单的页面转换动画,所以如果我们导航到他的主页(启用了js)firedogcreative.com,然后导航到他的编辑页面,然后导航到他的一个工作页面;我们的历史是这样的

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

AJAX 负责加载每个页面的内容,并在每种情况下更新URL栏中的散列,所有工作都完全按计划进行。
当用户点击后退按钮时,我不确定我是否明白发生了什么。如果他们在#example1并点击浏览器的后退按钮,URL栏更新为firedogcreative.com/#edit,但页面内容不会改变。如果用户重新加载页面,它会正确地重新加载到#edit
我试着添加了这个,我认为这会导致页面不缓存,因此每个后退按钮调用都会重新加载页面,但它似乎没有效果:

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

如果这起作用,这将是一个过得去的解决方案。页面实际上只会在用户使用前进/后退按钮时重新加载,这将是很好的。
所以我的问题是,后退按钮是怎么回事?难道onbeforeunload不应该导致后退按钮根据存储的URL重新加载吗?

fzwojiic

fzwojiic1#

所以我的问题是,后退按钮是怎么回事?
返回上一个URL。
由于更改片段标识符以跟踪应用程序状态是一种黑客行为,因此不会发生其他任何事情。
onbeforeunload不应该导致backbutton根据存储的URL重新加载吗?
不可以。您正在同一文档中导航回来,因此不会卸载该文档。
您需要监视hashchange event并使用自己的JS更改应用程序状态。
或者,切换到使用pushState并观看popstate event

jum4pzuy

jum4pzuy2#

我在我的网站中遇到了相同或类似的问题,它只使用静态HTML和CSS。所以我怀疑这个问题不是由于 AJAX 或Javascript编程中的一些错误,而是实际上在CSS中,结合我所看到的浏览器错误。奇怪的是,这些错误存在于所有主要的浏览器中,并且已经存在多年了。但也许我错了,这是故意的和正确的行为?
我对“后退按钮”问题的描述,以及尝试的解决方法,在我的文章https://rudhar.com/sfreview/backbutn/en.htm中更具体地从这里开始:https://rudhar.com/sfreview/backbutn/en.htm#BackButtonP

相关问题