防止/停止发生自动锚链接

我需要在使用link.html#idX和

时阻止浏览器中的自动滚动行为。

我试图解决的问题是我试图通过检测url中的锚来尝试在页面加载上执行自定义滚动function,但到目前为止还无法阻止自动滚动function(特别是在Firefox中) 。

有任何想法吗? 我在$(window).load()处理程序上尝试过preventDefault(),它似乎不起作用。

让我重申这是针对滚动页面中未点击的链接; 它适用于滚动页面加载的链接。 考虑点击链接中带有#anchor的其他网站的链接。 什么阻止自动滚动到ID?

每个人都明白我不是在寻找一种解决方法; 我需要知道是否(以及如何)阻止在页面加载时自动滚动到#anchors。


注意

这不是一个问题的答案,只是一个简单的竞赛条件风格的克拉格。

使用jQuery的scrollTo插件滚动回页面顶部,然后使用自定义内容恢复滚动。 如果浏览器/计算机足够快,页面上没有“闪烁”。

我觉得这很脏……

$(document).ready(function(){ // fix the url#id scrollto "effect" (that can't be // aborted apparently in FF), by scrolling back // to the top of the page. $.scrollTo('body',0); otherAnimateStuffHappensNow(); }); 

感谢wombleton指出它。 谢谢!

这似乎是我可以看到的唯一选项:

 $(document).ready(function() { $.scrollTo('0px'); }); 

它不会自动滚动到类。

因此,如果你用独特的类来识别你的div,你会在查找元素时失去一点速度,但会获得你所追求的行为。

(顺便说一下,谢谢你指出了滚动到id的function!从来不知道它存在。)

编辑:

我知道这是一个旧线程,但我发现了一些东西,而不需要滚动。 在任何其他脚本之前先运行此命令。 它会在页面上的第一个元素之前放置一个锚点,以阻止滚动,因为它位于页面顶部。

 function getAnchor(sUrl) { if( typeof sUrl == 'string' ) { var i = sUrl.indexOf( '#' ); if( i >= 0 ) { return sUrl.substr( i+1 ).replace(/ /g, ''); } } return ''; }; var s = getAnchor(window.location.href); if( s.length > 0 ) { $('').insertBefore($('body').first()); } 

干杯! 欧文汉特斯

  1. 首先滚动到顶部(快速,无效果),然后调用滚动function。 (我知道它不那么漂亮)
  2. 或者只是使用前缀

这对我很有用:

1-把它放在你的css文件上

 a[name] { position: absolute; top: 0px } 

2-在你开始制作动画之前把它放在你的document.ready bind上(如果你动画的话)

 $("a[name]").css("position","relative"); 

可能需要调整,具体取决于你的样式表/代码,但你明白了。

相信: http : //cssbeauty.com/skillshare/discussion/1882/disable-anchor-jump/