使用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中没有#,这怎么办?
答案 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