Javascript:document.url没有锚(哈希)部分

时间:2013-03-04 02:17:21

标签: javascript url get window anchor

我已经尝试了30分钟的搜索,所以如果已经被问过,我会道歉。

我有一些返回一组结果的Ajax,当点击一个结果时,它只是将带有附加数据的URL重新加载到下一页的PHP to GET的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"

感谢您的帮助!

4 个答案:

答案 0 :(得分:9)

这似乎有点简单:

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

可以通过独立组件访问位置对象,您可以使用这些组件根据需要重建URL。

官方文档目前处于离线状态,但this site似乎有。

如果这些是你正在生成的内部链接,你只需要生成一个相对网址,可能即使只有location.pathname就足够了。

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

答案 3 :(得分:0)

我正在使用:

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

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