【问题标题】:Javascript: document.url without the anchor (hash) portionJavascript:没有锚(哈希)部分的 document.url
【发布时间】:2013-03-04 02:17:20
【问题描述】:

我已经尝试搜索了 30 分钟,所以如果有人问过这个问题,我深表歉意。

我有一些 Ajax,它返回一组结果,当单击一个结果时,它只是将带有附加数据的 URL 重新加载到 URL 以供 PHP 在下一页上获取。问题是,如果用户单击某些内置锚点(我无法删除),则 URL 将为 something.com#location1,因此附加 ?action=next 会将其转换为浏览器将其解释为长锚点的 something.com#location1?action=next,而不是一个实际指向的新 URL。

如果用户从不点击锚点部分,则此重定向使用window.location=document.url+"?action=next" 可以顺利进行

有没有办法从现有页面的 URL 中删除锚点(包括井号标签)?

已解决

使用Michael W's answer 我能够解决它。我只是替换了这一行:

window.location=document.url+"?action=next"

有了这个:

window.location=document.location.href.match(/(^[^#]*)/)[0]+"?action=next"

感谢您的帮助!

【问题讨论】:

  • 我选择了 Michael W 的解决方案(稍作修改),标记为这样并编辑了原始问题以包含未来读者的解决方案。

标签: javascript url get window anchor


【解决方案1】:

这似乎稍微简单了一点:

document.URL.replace(/#.*$/, "")

【讨论】:

    【解决方案2】:

    您可以匹配该位置的标签前部分:

    document.location.href.match(/(^[^#]*)/)
    

    【讨论】:

    • 对于那些阅读:这将返回一个数组。指定第一个元素对我有用:window.location=document.location.href.match(/(^[^#]*)/)[0] 我完全使用document.url 中止了。
    【解决方案3】:

    位置对象可以由独立的组件访问,您可以使用这些组件来重构 URL,您可以根据需要使用尽可能多或尽可能少的部分。

    官方文档暂时下线了,但是this site好像有。

    如果这些是您生成的内部链接,您只需要生成一个相对 url,也许即使只是 location.pathname 就足够了。

    请注意,您将问题标记为 Javascript,但由于您使用 PHP 进行编码,我怀疑您需要在 PHP 端生成这些链接。

    【讨论】:

    • location.pathname 确实适合我。但是window.location.pathname和它有什么区别呢?
    • @JAT86 - 它们是相同的,因为它们引用了相同的对象。它只有两种访问方式。
    【解决方案4】:

    我正在使用:

    document.location.href.split('#')[0];
    

    它找到第一个哈希并忽略路径的其余部分。如果没有哈希,没问题。在这种情况下,它将占用整个路径。

    【讨论】:

      猜你喜欢
      • 2010-11-16
      • 1970-01-01
      • 2011-05-01
      • 2014-09-10
      • 2015-11-18
      • 2015-02-09
      • 1970-01-01
      • 2014-10-02
      相关资源
      最近更新 更多