小编典典

如何在不重新加载和#hack的情况下更改窗口的位置?

ajax

起初我以为必须要使用哈希值破解,但是从Facebook的最新更新来看,我在想另外的方法。

最初的哈希破解(我不确定这是否是正确的术语)是通过更改location.hash,可以在不刷新页面的情况下将状态保存在URL中。Google的应用程序,Facebook和最近的#NewTwitter广泛使用了该功能。但是今天我注意到,如果您使用“现代”浏览器(例如chrome或Firefox),Facebook将不再具有此“#”。我再次检查了它们是否分别使用开发人员工具和Firebug重新加载。

在stackoverflow中进行最少的搜索后,最接近该解决方案的是使用Flash-
但是我禁用了Flash,facebook.com仍然可以正常运行。从chrome 8 dev和firefox 4
beta的覆盖范围来看,我想知道这可能与HTML5时代的API有关,但是Facebook中的代码不是我调试的能力来找出它们的作用。

因为这就像我在这里问的第一个问题,所以我想知道你们中是否有人已经解决了这个问题。

多谢你们。

PS不适用于IE8,未经IE9 beta测试。


阅读 281

收藏
2020-07-26

共1个答案

小编典典

Facebook正在HTML5中使用历史记录api。从此博客文章中,您可以了解其工作原理。基本上,他们像下面的电话一样拨打电话,以更改网址而无需重新加载页面。

window.history.pushState("object or string", "Title", "/new-url");

这是关于它的HTML5工作规范草案:http :
//www.whatwg.org/specs/web-apps/current-work/multipage/history.html#the-
location-interface

可悲的是,IE9不支持该API。新版本的Chrome和FF完全支持。

2020-07-26