使用JavaScript是否可以更改浏览器的URL,但不能离开页面?
答案 0 :(得分:16)
在较旧的浏览器中,您可以不更改地址栏中的网址而不离开该网页。但是您可以在不离开页面的情况下更改URL的哈希部分。也就是说,您可以使用JavaScript www.example.com
将www.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)
不,这是不可能的。并且,只要有可能,这就是浏览器错误(我知道以前与此行为相关的安全漏洞,并且它们已在过去修复)。
实际上......您可以更改网址的最后一部分,即#
字符之后的任何内容。但是,如果不离开页面,则无法更改主机名和路径。