打开顶部的页面,即使URL中有一个#锚可以降低页面的高度

Open page at top even if there is an #anchor to lower down the page in the URL

本文关键字:高度 URL 顶部 即使 有一个      更新时间:2023-09-26

我有一个问题:有可能禁用浏览器对链接的默认操作吗?

我不是在谈论使用event.preventDefault() 禁用锚点标签(第123部分)上的点击事件

我想做的事情:在页面的开头有一个TOC,带有指向页面不同部分的名称链接(#part-)。我可以使用轻松禁用每个链接上的点击事件

$("a.namedLink").click(function(event) {
  event.preventDefault();
  //and do whatever I want to, like animated scroll then moving the dock-able header using jQuery Affix plugin
}); 

但是,如果有人复制链接或使用URL本身(链接)直接打开链接,上面的代码将不起作用,因为没有单击任何内容。

我已经检查了几个例子,但它们都谈到了相同的页面和#click事件,比如这个Stackoverflow线程使用jquery和其他方法滚动到div:

链接1

链接2

请让我知道我们是否能做到,更重要的是,我们是否应该做到。

感谢

您可以使用滚动到锚点

$(document).scrollTo("a[name='namedLink']");

如果用户直接使用散列点击页面,您也可以在页面加载时检查散列位置:

$(function() {
  var hash = window.location.hash.substring(1, window.location.hash.length);
  if(hash != "") {
    $(document).scrollTo("a[name='"+hash+"']");
  }
});

应该吗这完全取决于你。这就像重新发明轮子只是为了让它变成红色,尽管不是每个人都喜欢红色。

如前所述,非常有用的scrollTo()方法实际上是一个插件,而不是内置在jQuery中。它可以在这里找到:http://demos.flesler.com/jquery/scrollTo/

您可以执行以下操作:

$(function () {
  window.scrollTo(0,0);
});

以在页面加载后将用户带回顶部。然而,这可能意味着页面会跳转两次。