如何删除除第一个之外的所有 URL 哈希?
Posted
技术标签:
【中文标题】如何删除除第一个之外的所有 URL 哈希?【英文标题】:How to remove all URL hashes except first? 【发布时间】:2019-09-29 18:42:17 【问题描述】:嗯,在我的网站上,我有一个常见问题解答,用户可以通过 URL 访问特定问题,例如:
https://example.com/faq#question-1
为此我使用 Jquery,这样:
if (window.location.hash)
$(window.location.hash).open();
但如果用户在 URL 中输入多个哈希值,我希望这样:
https://example.com/faq#question-1#question-2#question-3#question-n
除第一个 #question-1
外,所有哈希都从 URL 中删除
我该怎么做?
编辑:
如果用户输入 https://example.com/faq#question-1#question-2#question-3#question-n
则将 url 更改为 https://example.com/faq#question-1
以便只有第一个哈希出现在 url 中,FAQ 只需读取单个哈希。
【问题讨论】:
您想删除哈希然后重定向回来吗?我不确定我是否理解。 @Twisty 仅从 URL 文本中删除哈希,不重定向回 【参考方案1】:也可以这么简单
var hash = window.location.hash;
var filtered_hash = '';
if(hash.length > 0)
filtered_hash = '#' + hash.split("#")[1];
window.location.hash = filtered_hash;
console.log(filtered_hash);
【讨论】:
为什么console.log是空的? @HéctorManuelMartínezDurán 因为 SO 的当前 URL 没有 URL 片段。您可以在 URL 中有哈希的网站上对此进行测试。【参考方案2】:这应该适合你
var str="https://example.com/faq#question-1#question-2#question-3#question-n";
var trimmedStr = str.split("#").slice(0,2).join("#");
console.log(trimmedStr);
这会删除第一个哈希之后的所有哈希。
【讨论】:
【参考方案3】:你可以使用类似的东西 -
location.hash = '#'+location.hash.split('#')[1]
【讨论】:
以上是关于如何删除除第一个之外的所有 URL 哈希?的主要内容,如果未能解决你的问题,请参考以下文章
jQuery:查找重复的 ID 并删除除第一个之外的所有 ID