链接哈希:如何始终导航

时间:2017-09-14 11:17:42

标签: javascript html

在我正在处理的网站的页脚上,我有不同页面的链接,在一种情况下,链接到同一页面的2个链接,网址中有不同的哈希,如下所示:

<a href="http://example.com/mypage#test>Test</a>
<a href="http://example.com/mypage#test2>Test2</a>

这些哈希值不是真正的锚点,它们反映了用户采取的一些操作(即显示/隐藏某些内容)。 如果我来自另一个页面,我会毫无问题地导航。但是,如果我已经在&#34; mypage&#34;,那么哈希值会发生变化,但没有任何反应。浏览器检测并锚定更改,从而尝试导航到锚点 这很公平,但我希望我的用户实际上被重定向到&#34; http://example.com/mypage#test2&#34;,就像他自己在地址中复制粘贴一样酒吧。我怎样才能做到这一点?

我可以使用hashchange事件但是它会使管理其余的javascript变得复杂,所以我想知道是否有更简单的方法来执行它。

2 个答案:

答案 0 :(得分:0)

如果您使用的是jQuery,则有一个非常简单的解决方案:

$(window).on('hashchange', function() {
    //code
});

看看这个:On - window.location.hash - Change?

另外this MDN文档。

答案 1 :(得分:0)

使用window对象的location.hash属性来查找锚点是什么。要使用普通javascript检测哈希值的更改,只需使用onhashchange事件。

window.onhashchange = new function() {
    window.location.replace("http://example.com/mypage" + window.location.hash);
});