如何实现Facebook相册影响URI?

时间:2011-02-23 22:11:12

标签: javascript facebook

使用Facebook的人可能已经注意到最近对相册的更改和查看照片。

它们允许您使用键盘上的左右箭头键来更改您正在查看的照片。

我知道有很多开源的javascript脚本可以用来查看照片,但有什么不同......在旧的facebook专辑和其他javascript相册中,他们似乎使用在URI / URL中获取ID,然后可以进行ajax调用。

实施例;
http:mydomain.com/album.php?aid = 12312& pid = 43534#SomeIDhereAsWell

Facebook上的新版本似乎有相同的结果/影响,但网址看起来像这样......

http://www.facebook.com/photo.php?fbid=1431582004331&set=a.1317260946376.35985.1676316284&theater
http://www.facebook.com/photo.php?fbid=1304601029886&set=a.1317260946376.35985.1676316284&theater
http://www.facebook.com/photo.php?fbid=1431444360890&set=a.1317260946376.35985.1676316284&theater

所以javascript的URL中没有#,这怎么办?

2 个答案:

答案 0 :(得分:0)

以下是:

请注意网址的查询参数:

fbid=1431582004331 // id of the foto  
set=a.1317260946376.35985.1676316284  // id of the album 
theater  // indicates theater mode or the new 'mode'

单击上一个/下一个箭头(或键盘事件),发送上面的参数和一个标记,说明是否单击了上一个或下一个按钮。服务器发送集合中的下一张照片,然后它会执行window.location.replace来更改URL。

JSON resposne还有“IsLast”或“IsFirstResponse”等有用的标志来启用/禁用箭头键/图标。

通过查看FB javascript代码来解决这个问题。

答案 1 :(得分:0)

我认为它使用了这个:

var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");

在此处找到:Change the URL in the browser without loading the new page using JavaScript

我一直在这里测试它: http://django.liveproject.is/event/rff/

我还没有找到如何处理后退和前进按钮功能,或者我应该使用history.replaceState()而不是history.pushState()

编辑:

我认为这可能是我们的答案:Cross-browser jquery ajax history with window.history.pushState and fallback