我已经尝试了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"
感谢您的帮助!
答案 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];
它找到第一个散列并忽略路径的其余部分。如果没有哈希,没问题。在这种情况下,它将采用整个路径。