【问题标题】:How to change the URL displayed in the browser without leaving the page如何在不离开页面的情况下更改浏览器中显示的 URL
【发布时间】:2011-05-04 14:26:56
【问题描述】:

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

【问题讨论】:

标签: javascript url browser-history


【解决方案1】:

在旧版浏览器中,您可以在不离开页面的情况下更改地址栏中的 url。但是您可以在不离开页面的情况下更改 url 的哈希部分。也就是说你可以把www.example.com改成www.example.com#new_text用JavaScript 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

【讨论】:

【解决方案2】:

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

实际上...您可以更改 URL 的最后一部分,# 字符之后的任何内容。但是不离开页面就不能更改主机名和路径。

【讨论】:

    【解决方案3】:

    我假设您在谈论 URL 栏中的可见 URL。

    答案是否定的,这是一个重大的安全漏洞,当应用程序试图诱使用户认为他们在另一个站点时。

    【讨论】:

      【解决方案4】:

      您可以更改井号 (#) 之后的任何内容,因为这在 Ajax 应用程序中经常使用,例如 Google 搜索和新的 Twitter。 (这就是为什么在这些应用程序中所有内容都出现在井号之后。)但是如果您更改其他任何内容,则必须重新加载页面。

      【讨论】:

        猜你喜欢
        • 2012-01-23
        • 1970-01-01
        • 2019-11-11
        • 2021-01-13
        • 2014-01-23
        • 2015-11-15
        • 1970-01-01
        • 2012-06-02
        相关资源
        最近更新 更多