如何在浏览器url框中更改url?

我真的好奇为什么facebook和谷歌可以在不重新加载页面的情况下更改url? 他们只是改变他们网站中的块或内容。

我注意到,当我使用Facebook时,点击“新饲料”时,url为“http://www.facebook.com/”并且页面没有重新加载,然后我点击“消息”url已更改到“http://www.facebook.com/messages/”并且页面仍然没有重新加载只是更改网站的“内容”块。

那么如何在不重新加载页面的情况下更改URL?

编辑:我得到了答案。
这里有2个案例:

  • 浏览器支持html5(Firefox 3.6 +等):使用html5历史记录。 (例如:www.facebook.com => www.facebook.com/messages)
  • 浏览器dos不支持html5(IE6,IE7,IE8等):使用哈希标签(#)(例如:www.facebook.com => www.facebook.com/#!/messages)

希望对像我这样怀疑的人有所帮助。

你有没有看过Javascript的历史API?

http://diveintohtml5.ep.io/history.html

编辑:您也可以使用mod_rewrite与apache然后,但这将导致刷新。

或者有这个JQuery插件

http://www.asual.com/jquery/address/

URL通常更改为http:// facebook /#!messages ,因此更改“片段”URL部分不会使浏览器重新加载页面。 相反,有一些JavaScript库可以监视片段更改并发出适当的请求以重新加载页面内容。

使用#! 几乎成为做这些事情的“标准”,我已经看到过这种情况在其他地方使用过(例如在Twitter上)。 我不记得他们是否都使用相同的库或只是命名约定,但你应该能够在fb / twitter开发者页面上挖掘它。

您可以为此目的查看Content-Location HTTP标头。 有关详细信息,请参见此处

我在JSBin.com上编码,主要使用CSS和HTML(Abandoned Javascript loooong),并有一个问题。 例如,页面的URL是http://www.codingrules.com/嗯,使用HTML,如何将该URL更改为例如http://www.ilovecoding.com