这与question的情形有些相似,但是这是用于页面加载的。
有了这个网站;我们有一个固定的标题,并且有这些链接,这些链接将转到另一个页面并指向HTML元素。它在大多数时间/所有时间都可以通过简单的刷新工作,但是在进行硬刷新时,它将向下滚动到元素,然后它将跳回到用户在刷新之前开始的位置。它可以在页面顶部,中间或元素下方。
我注意到并困惑的是complete
(动画对象)的回调方法称为两次。我有一个时间戳记打印到控制台上,这恰好是同一时间,并且我有一个console.trace
,其结果相同。可能与它跳回来有关吗?
从上面我提到的问题出发,它建议使用preventDefault
,但是当ready
方法不输出事件值时,这将很麻烦。
(function($) {
// Page Load
var hash = checkForHash();
if(hash) {
setTimeout(function() {
goToTarget(hash);
},750,hash)
}
function checkForHash() {
var hash = window.location.hash;
if(hash === '' || hash === '#' || hash === undefined) {
return false;
} else {
return hash;
}
}
function goToTarget(hash) {
var $target = $(hash);
var $fixedHeader = $('.navbar-static-top')[0];
$target = $target.length ? $target : $('[name="' + hash.slice(1) + '"]');
if($target.length) {
var isAnimating = false;
var scrollDistance = $target.offset().top - ($fixedHeader.clientHeight + 20);
if(!isAnimating) {
isAnimating = true;
$('html,body').stop().animate({
scrollTop: scrollDistance
},250,'linear',function() {
// window.scroll(0,scrollDistance);
isAnimating = false;
} );
}
}
}
})(jQuery.noConflict);