Javascript 在顶部打开页面,即使URL中有一个向下放置页面的#锚

Javascript 在顶部打开页面,即使URL中有一个向下放置页面的#锚,javascript,jquery,Javascript,Jquery,我有一个疑问:是否可以禁用浏览器对链接的默认操作,例如 我不是说使用event.preventDefault() 我想做的是: 在页面的开头有TOC,其名称链接(#part-)指向页面的不同部分。我可以使用以下方法轻松禁用每个链接上的单击事件: $("a.namedLink").click(function(event) { event.preventDefault(); //and do whatever I want to, like animated scro

我有一个疑问:是否可以禁用浏览器对链接的默认操作,例如

我不是说使用
event.preventDefault()

我想做的是: 在页面的开头有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本身()打开链接,上面的代码将无法工作,因为没有单击任何内容

我已经检查了几个示例,但是,它们都讨论了相同的页面和#单击事件,如Stackoverflow线程和其他线程:

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


谢谢

您可以使用以下工具滚动到定位点:

$(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中。可以在这里找到:

您可以执行以下操作:

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

加载页面后,将用户恢复到顶部。但是,这可能意味着页面会跳转两次。

可能会将某些内容绑定到页面加载事件并检查哈希的url?如果不想滚动窗口,请从标记中查找并删除
id=“part-123”
。我认为
scrollTo
是一个独立的插件,而jQuery没有提供。如果是这样的话,你应该提到这一点。@PavloMykhalov很好,更新的答案反映了这一点。谢谢@Blade0rz,让我尝试一下你所建议的poc,但是,我认为这有点接近我的需要。