通过JavaScript更改网址(无哈希标记)

时间:2010-11-07 00:13:49

标签: javascript facebook url hash

我想知道当我在相册中的图片之间切换时,facebook如何更改网址?没有哈希标记,只是一个真实的网址。

实施例: 当前网址:facebook.com/photo.php?fbid = XXXXXX1,如果我点击下一步,网址将更改为facebook.com/photo.php?fbid=XXXXXX2

有人知道如何用JavaScript实现这个目标吗?

4 个答案:

答案 0 :(得分:9)

是。查看https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#Adding_and_modifying_history_entries

它推送一个新的历史状态(一个HTML5的东西),而不是使用哈希键。

答案 1 :(得分:1)

我的第一个预感是:

document.location = facebook.com/photo.php?fbid=XXXXXX2;

通过某种方式阻止默认重新加载页面操作。

答案 2 :(得分:1)

总结所有答案,

我们可以说(我不是FB编码器)Facebook使用:

  • 支持这些方法的浏览器上的HTML5 window.history.pushState / replaceState / popState方法(我认为其中一个是Chrome)。通过这种方式Facebook 更改了真实网址(而不仅仅是#字符后面的部分。)

  • 在其他浏览器上,不支持这些新的HTML5方法(如IE6 / IE7和IE8),Facebook只需更改#字符后的网址部分,只需设置{ {1}}属性。

答案 3 :(得分:0)

在我的测试中,它只更改了哈希标记:

E.g。真正的URL是:

http://www.facebook.com/photo.php?fbid=x&set=z

并点击下一步结果:

http://www.facebook.com/photo.php?fbid=x&set=z#!/photo.php?fbid=y&set=z&pid=pid&id=id

Google AJAX crawl设置哈希后的部分。但是出于浏览器的目的,它只是一个哈希(片段标识符)。