在不更改URL的情况下注入新的历史记录条目。像谷歌地图一样

时间:2010-08-25 16:24:58

标签: javascript ajax browser-state

我正在尝试找到最好的方法,不要破坏我的javascript应用程序中的后退按钮。

在我的研究中,我试图了解最先进的技术。所以我转向谷歌地图,看看它是如何工作的。

它具有后退/前进功能,但在生成新的历史记录条目时不会更改URL。尝试转到http://maps.google.com/,键入NY并按Enter键。现在使用后退按钮。没有网址更改。

他们是如何做到的?我试图解决这个问题但是我很难浏览有关javascript历史和IE6技巧的过时文档。

3 个答案:

答案 0 :(得分:4)

创建新的历史记录条目:

location.hash = 'new_history_entry';

不创建历史记录条目:

location.replace('http://no/new/history/entry');

谷歌地图正在使用框架。要验证它,请运行HttpFox。你会得到一个带有javascript的HTML页面。 你可以自己分析它,或者只是相信我它可以用于框架。

答案 1 :(得分:1)

Lekensteyn的回答不会在IE6中添加后退/前进按钮,你需要一个框架。 jQuery History使用onhashchange事件,如果浏览器支持它(所有现代浏览器都支持),否则它将添加所需的适当向后支持(即6需要iframe,firefox 1,ie7等只需要间隔检查)。

答案 2 :(得分:0)

YUI Browser History Manager之类的东西会做到这一点