如何在不离开页面的情况下更改浏览器中显示的URL

时间:2010-11-03 16:20:57

标签: javascript url browser-history

使用JavaScript是否可以更改浏览器的URL,但不能离开页面?

4 个答案:

答案 0 :(得分:16)

在较旧的浏览器中,您可以更改地址栏中的网址而不离开该网页。但是您可以在不离开页面的情况下更改URL的哈希部分。也就是说,您可以使用JavaScript www.example.comwww.example.com#new_text更改为window.location.hash = "new_text"; #之后的所有内容都可以更改。

但是,在HTML5中有一个新的History API,它允许您在域之后更改URL的一部分。因此,您仍然无法将www.example.com更改为www.BankOfAmerica.com(出于安全原因),但您可以将www.example.com/foo更改为www.example.com/bar

history.pushState("object or string representing the state of the page", "new title", "newURL");

检查When can I use...以查看哪些浏览器支持HTML5会话历史记录管理并支持新的pushState方法。

此外,还有一个JavaScript库,可以跨浏览器规范化历史记录API,并在新浏览器中更改URL,并使用旧浏览器的哈希部分。请参阅history.js

答案 1 :(得分:4)

我假设你在谈论网址栏中的可见网址。

答案是否定的,当应用程序试图诱使用户认为位于另一个站点时,这是一个主要的安全漏洞。

答案 2 :(得分:0)

您可以在哈希标记(#)之后更改任何内容,因为这经常用于Ajax应用程序,例如Google搜索和新的Twitter。 (这就是为什么一切都出现在这些应用程序中的哈希标记之后。)但是如果你改变其他任何东西,那么页面将不得不重新加载。

答案 3 :(得分:-3)

不,这是不可能的。并且,只要有可能,这就是浏览器错误(我知道以前与此行为相关的安全漏洞,并且它们已在过去修复)。

实际上......您可以更改网址的最后一部分,即#字符之后的任何内容。但是,如果不离开页面,则无法更改主机名和路径。