当前位置: 首页 > 面试题库 >

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

陆文康
2023-03-14
问题内容

起初我以为必须要使用哈希值破解,但是从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测试。


问题答案:

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完全支持。



 类似资料:
  • 问题内容: 转到任何GitHub 页面,然后单击任何目录/文件,并观察URL的更改方式,但仅更新页面的一部分。没有整个页面重新加载。 我如何使用jQuery做类似的事情? 这对大多数浏览器都有效吗(我使用的是Chrome)? 问题答案: 他们使用历史记录API,或者专门使用。 您可以使用它,不需要jQuery,但是有一些插件,例如history.js。 这适用于大多数浏览器,即Chrome,Saf

  • 我有一个用户名列表,用户名列表根据用户输入的数量而增加。问题是,当用户输入用户名时,列表会被输入填充,只有当我的页面重新加载时,我的页面才会更新。这是我迄今为止尝试过的代码。 我无法在外页重新加载的情况下更新数据。请建议我如何更新ui:在外页重新加载的情况下重复数据。提前谢谢。

  • 问题内容: 有没有办法可以在不重新加载页面的情况下修改当前页面的URL? 如果可能,我想访问#哈希 之前 的部分。 我只需要更改域 后 的部分,所以就好像我没有违反跨域策略一样。 问题答案: 现在,可以在Chrome,Safari,Firefox 4+和Internet Explorer 10pp4 +中完成此操作! 例: 然后,您可以用来检测后退/前进按钮的导航:

  • 问题内容: 我有http://mysite.com/index.php。 还有一个子菜单 主页=> http://mysite.com/index.php 关于我们=> http://mysite.com/about.us.php 产品=> http://mysite.com/products.php 但我希望http://mysite.com/index.php处理每个请求,并仅使用Ajax请求

  • 问题内容: 有没有办法可以在不重新加载页面的情况下修改当前页面的URL? 如果可能,我想访问#哈希 之前 的部分。 我只需要更改域 后 的部分,所以就好像我没有违反跨域策略一样。 问题答案: 现在,可以在Chrome,Safari,Firefox 4+和Internet Explorer 10pp4 +中完成此操作! 有关更多信息,请参见此问题的答案: 使用新URL更新地址栏而不散列或重新加载页面