2016-08-30 62 views
0

我工作的一个网站(返工可能是一个更好的词,因为我没有建立它最初)和我遇到以下情形怪异:为什么浏览器的后退按钮不是指向上次浏览的页面?

用户去一个网页,其中显示当前的事件列表。这被称为“whats-on”。

我添加了一个链接到这个网页这需要用户一个完整的事件日历月在一个典型的日历格式。这个页面被称为“事件日历”。一旦在网页上,他们还可以选择他们想要的月份看,他们是什么类型的事件感兴趣。

用户可以在任意日期列出的事件点击浏览的页面与该事件的细节。 (页面是带有查询的事件详细信息,用于提取相关事件。)我在事件列表下的页面上添加了一个返回按钮,该按钮将返回到显示月份和搜索结果的日历。没有问题 - 我正在使用PHP $ _SERVER ['HTTP_REFERER'],并且完美地工作。

这里的问题 - 如果我只是做了该按钮后()或history.go(-1)的链接,它把用户所有的方式回到“什么上”。单击浏览器后退按钮时会发生同样的事情。它只是完全跳过“事件日历”。

这显然发生在其他场景下,如商业列表和搜索。

很显然,我不希望这样的行为 - 我想后退按钮像它应该回到之前所浏览过的页面!

我想不出任何会导致这种情况的代码,但原始网站开发人员包括了一大堆JQuery包,比如jQuery UI,而且我想知道是否有可能干扰默认后退按钮行为。这甚至有可能吗?

我猜我想知道的是有任何的jQuery代码,将改变后退按钮的行为,所以我可以追捕下来,并杀死它!

只是寻找从哪里开始寻找的想法。

+4

很难说没有任何相关的代码,所有页面真的 –

+0

取决于导航。如果您在javascript中执行'location.replace(...)',那么您将覆盖当前位置,而不会向历史链添加新条目。 –

+0

也许很多事情发生在JS中,所以你从来没有真正改变过页面,所以反击回到1页,这只是你没有移动页面。 – Asperon

回答

0

显然,我可以得到它的工作的唯一办法是操纵本身的日历页上使用

history.pushState({}, '', 'event-calendar?<plus whatever query was used to pull the data>'); 

浏览器历史记录。

这似乎工作,但多么愚蠢的解决方法。希望我能找到原来的问题。

+0

您是否在使用任何种类的日历功能插件?也许_that_使用AJAX和/或通过脚本操纵历史。 – CBroe