激活URL锚,但不滚动到它吗?

问题描述 投票:6回答:6

我有一个页面,其中有两个选项卡,我希望能够使用Javascript进行切换,但还要在URL中设置锚点(例如page.html#tab1)以进行书签/链接。

默认情况下,选项卡内容位于两个div中,一个位于另一个div之下,并且锚标记将滚动到正确的一个div,并且禁用JS。

启用JS后,将应用CSS类使它们充当选项卡。每个选项卡都链接到每个锚点,但是当您单击以切换选项卡时,页面将滚动到该选项卡。如果我从onclick函数返回false,则URL不会更改为包括锚点。

如何使浏览器URL更改为page.html#tab1,但不滚动至#tab1

javascript scroll anchor
6个回答
5
投票

我玩了一段时间,因为起初我不相信您(我使用jQuery history plugin获得类似的行为)。

我很困惑。我认为你不能。解决方法,您可能要做的是use javascript to set the hash to something DIFFERENT from what is actually on the page。然后在加载时使用javascript读取哈希并填充正确的内容。 I do this on my site。因此,在这种情况下,没有javascript的用户将被滚动,拥有javascript的用户将保持历史链,并且只有当没有向与javascript的人发送链接的人(反之亦然)时,它才会变得古怪。


1
投票

快速攻克:


0
投票

您可以使用一些Javascript来更改锚名称,设置window.location.hash,然后再更改锚名称吗?


0
投票
var Namespace = {
  var timer, scroll;
}

// Onclick
Namespace.scroll = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
Namespace.timer = setInterval(function() { scrollTo(0, Namespace.scroll) }, 100);
location.hash = this.href;
clearInterval(Namespace.timer);

0
投票

我在这里找到了一个不错的解决方案:http://lea.verou.me/2011/05/change-url-hash-without-page-jump/


-1
投票
window.location.hash = 'tab1';
© www.soinside.com 2019 - 2024. All rights reserved.