从像Facebook这样的Javascript更改URL

时间:2011-05-05 15:24:36

标签: javascript ajax facebook back-button

我目前正在使用面向AJAX的Web应用程序。我一直在寻找使用浏览器url复制当前AJAX状态(或应用程序状态)的不同方法,因此刷新和后退按钮也可以。

在过去的几周里,我看到了使用hash(#)和不同JS框架的不同方法。

在文档中说明,无法从JS更改浏览器URL。今天我去了Facebook并打开了一张图片,网址发生了变化(Altough图像在灯箱中打开)。关闭图像后,​​浏览器网址会更改回原始页面。

你知道他们是如何实现这种行为的吗?

3 个答案:

答案 0 :(得分:8)

HTML5的一项功能支持您所指的内容。请参阅http://spoiledmilk.dk/blog/html5-changing-the-browser-url-without-refreshing-page

有些系统通过检查window.history.pushState来实现这一点,如果是这样,使用它,否则回退到hashtags。如果关注SEO,请使用#!代替 #。看到 http://code.google.com/intl/es/web/ajaxcrawling/docs/getting-started.html

希望有所帮助。

答案 1 :(得分:1)

您可以像这样操作URL末尾的has值:

var hashVal = 'somevalue';
window.location.hash = '#' + hashVal;

然后网址将变为www.something.com/#somevalue

答案 2 :(得分:0)

你可以像Neal指出的那样操纵哈希值。但我建议使用库来做同样的事情。这是我使用的一个

http://developer.yahoo.com/yui/history/

URL中的哈希值主要用于后退按钮和书签集成。希望这会有所帮助。