【问题标题】:Change URL in address bar without having to reload [duplicate]无需重新加载即可更改地址栏中的 URL [重复]
【发布时间】:2013-03-20 14:10:57
【问题描述】:

我发现了很多关于更改网址(无需重新加载)的问题。 一些答案是 - 使用插件,使用location.hash ...,或重新加载

但没有一个对我有用。

在网站上我有一个下拉菜单,并且在其更改时 url 参数应该已更改。

所以我想做的是:

我想在不重新加载的情况下将www.foo.com?country=Germany 更改为www.foo.com?country=Slovenia

我正在努力实现的目标是否可能?

【问题讨论】:

  • 您想更改在 URL 地址栏中向用户直观显示的内容吗?出于什么目的?我无法想象基于安全性,浏览器会允许这样做。如果你能提供一个目的,也许我们可以提供一个替代方案。
  • 我有一个国家/地区列表(下拉列表),在更改时,我想更改网址。有什么目的?嗯...网站上的所有内容都更改(没有)重新加载,所以我也想更改网址。
  • 你看过这个答案吗? stackoverflow.com/questions/3338642/…
  • 看这个演示:html5demos.com/history

标签: javascript


【解决方案1】:

您正在寻找的是 HTML5 提供的 History API。它具有history.pushState(...)history.popState(...) 等功能,可让您动态更改 URL,而无需完全分配新的 URL。

它被许多网站使用,我怀疑包括 Facebook 本身,如果您打开聊天框并在页面之间导航,聊天框不会重新加载。这意味着所有新内容都是通过 Ajax 获取的,但是 URL 不会改变,不是吗?但确实如此。我认为他们是通过history.pushState(...) 来实现的,您只需将一个新状态推送到历史堆栈中,它只会更改页面的某个部分。你会发现一个很好的教程here

【讨论】:

    【解决方案2】:

    您可以在较新的浏览器中使用;在旧版本中,您只能更改哈希值。这似乎是一篇关于该主题的好文章: http://html5doctor.com/history-api/

    【讨论】:

      猜你喜欢
      • 2016-06-08
      • 2012-06-12
      • 2012-08-23
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多