防止页面加载时的默认哈希行为

我有一个带有选项卡式界面的页面。 每个标签都有一个唯一的ID。 我已经启用了指向该页面的链接,并在哈希之后附加了id,我现在正试图绕过默认的浏览器行为,该行为在页面上元素的位置打开带有哈希的URL。

所以:

  • pageA链接到pageB,如下所示: Go
  • pageB打开,我的jQuery激活了正确的选项卡,但浏览器已向下滚动到页面上
    的位置。

这正是我想要阻止的。

有任何想法吗? 谢谢!

没有办法阻止默认的哈希行为,但您可以更改哈希方案,以使#tag与页面上的任何ID不对应。 在页面加载时,获取哈希值并附加一个常量(例如: _hash ),然后使用jQuery滚动到该值。

示例: http://mysite/page.php#tab4

page.php有

在页面加载时,通过执行tab4 + _hash获取div

我会用这个:

 window.scrollTo(0,0); 

这样您就不需要更改元素ID或其他任何内容。

我遇到了问题,我想向下滚动到选项卡,但由于某种原因,它滚动到它的页面底部(不,没有重复的ID)。 我认为这是因为浏览器会在内容完成加载之前滚动到id,而额外的内容会将元素推到新的滚动位置之上。 我修好了这个:

 if(document.location.hash) { window.location = document.location.hash; } 

这里的“if”语句是强制性的,或者您可能会获得无限循环

完成加载右侧选项卡后,运行以下命令:

 window.location = '#'; 
  1. 你应该默认隐藏id = hash的元素
  2. 然后,在页面加载后,您可以使元素可见。

你可以在这里找到更多信息: 如何在加载页面时禁用锚点“跳转”?