6

我已经尝试搜索这个 30 分钟,所以如果已经被问到,我很抱歉。

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

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

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

解决了

使用迈克尔 W 的答案,我能够解决它。我只是替换了这一行:

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

有了这个:

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

谢谢您的帮助!

4

4 回答 4

13

这似乎稍微简单一些:

document.URL.replace(/#.*$/, "")
于 2013-04-30T03:56:54.447 回答
5

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

document.location.href.match(/(^[^#]*)/)
于 2013-03-04T02:30:55.583 回答
2

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

官方文档目前处于离线状态,但这个站点似乎有它。

如果这些是您正在生成的内部链接,您只需要生成一个相对 url,甚至可能就location.pathname足够了。

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

于 2013-03-04T02:28:10.750 回答
0

我在用着:

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

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

于 2021-04-18T11:51:00.547 回答