Facebook更改页面URL但实际上并未更改页面

时间:2010-10-18 17:58:06

标签: javascript http facebook

我在Facebook上并意识到当我更改页面时,页面地址会发生变化,但页面不会重定向,而是通过ajax加载。

您可以告诉,因为当您单击链接但URL更改时,控制台不会清除。

很奇怪,但有人知道它是如何完成的吗?

1 个答案:

答案 0 :(得分:0)

Facebook运行大量的AJAX调用,可以更改页面状态和部分。 因此,要通过复制URL地址使页面可链接到某人,每次调用AJAX相关函数时,他们都会使用假锚“#!”更新URL。加上真实的地址。 简单地当您加载真实页面(使用F5或链接那么某人)时,JS解析器会在#之后捕获字符串! (如果有)并将你重定向到baseaddress + that。

我相信这样的事情(未经测试):

var urlstr = new String(location.href);
var urlparm = urlstr.split('#!');
var last = urlparm.length - 1;

if( (urlparm[last] != urlparm[0]) && (urlparm[last] != "/") )
{  var redir = "http://www.facebook.com" + urlparm[last];
   location.href = redir;
}

在谷歌浏览器中,URL确实发生了变化,我认为某处存在哈希,但我不知道在哪里以及如何。