【问题标题】:Remove anchor, but not arguments, via JavaScript通过 JavaScript 删除锚点,但不删除参数
【发布时间】:2011-07-04 23:46:56
【问题描述】:

我想更改以下示例网址

http://www.mydomain.net/site?argument1=test1&argument2=test2#anchor

http://www.mydomain.net/site?argument1=test1&argument2=test2

使用 JavaScript。我该怎么做才最好?

编辑:对于“锚”和其他文本元素,我指的是通用元素。所以锚点也可以是另一个文本。对不起。

【问题讨论】:

  • 第一个 URL 坏了,锚点必须在 end(在查询字符串之后)
  • @David Dorward:哦,我没注意到,谢谢。这已经对解决问题有很大帮助......
  • @David Dorward:URL 非常好(它是http://www.mydomain.net/site#anchor?argument1=test1&argument2=test2) 这种形式可用于创建 Ajax 请求的历史记录,包括参数。 “查询字符串”是哈希的一部分。
  • 鉴于问题的上下文,它比哈希爆炸问题的实例更有可能被破坏。
  • @David Dorward:实际上这对我来说很有意义。因为 OP 说他想重新加载到 new 位置。仅删除哈希并重新加载不会将他带到新位置。但无论如何......

标签: javascript regex url


【解决方案1】:

如果您尝试更改当前位置的锚点,最好更改window.location.hash

window.location.hash = '';

在某些浏览器中,这将避免在 URL 更改时重新加载页面。

【讨论】:

  • 这将导致'#'仍然存在。另外,我认为它也会删除所有参数。
  • “另外,我认为它也会删除所有参数。”据我所知,锚无论如何都需要走到最后,所以这不是问题。我想剩下的就是替换“#”
  • 它不会删除格式正确的 URL 中的参数(其中参数位于哈希之前);如果散列后有参数,它们不是真正的参数,只是散列的一部分。
  • 我不确定如何摆脱剩余的#。您可以从要保留的位中编造一个新的 URL,但请注意,这会导致大多数浏览器重新加载页面:window.location = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search
  • 您也可以使用 window.history object 替换 URL 而无需重新加载页面,但这开始变得非常复杂。
【解决方案2】:

试试这个:

window.location = window.location.replace(/#anchor/,"");

【讨论】:

    【解决方案3】:

    好的,我试了一下,效果很好:

    var url=window.location.toString(); 
    url=url.replace(/#anchor/,''); 
    window.location=url;
    

    【讨论】:

      【解决方案4】:

      这应该替换您网址中的#anchor 以及#anchor_etc 或#anchor-etc
      var url = "http://www.mydomain.net/site?argument1=test1&argument2=test2#anchor";
      url = url.replace(/\#[a-z\-\_]+/i, '');

      【讨论】:

        【解决方案5】:
        window.location = window.location.replace('#anchor','');
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-05-08
          • 2013-08-16
          • 2015-03-09
          • 1970-01-01
          • 1970-01-01
          • 2021-08-02
          • 1970-01-01
          相关资源
          最近更新 更多