我有一个函数可以检测用户当前所在的单页站点的部分,并根据传递给它的变量滚动到下一部分或上一部分。这在 Safari 和 Chrome 中运行良好。但是,在 Firefox 中,无论滚动位置在哪里,它都会将浏览器视为滚动 0。
function scrollToSection(dir) {
if( !$("body").hasClass("scrolling") ) {
$("body").addClass("scrolling");
var headerH = $(".page-header").outerHeight();
var scrollTop = $("body").scrollTop();
$("section").each(function() {
var sectionH = $(this).outerHeight(true);
var sectionOffset = $(this).offset();
var sectionOffsetTop = sectionOffset.top - headerH;
if( (sectionOffsetTop <= scrollTop) && (sectionOffsetTop + sectionH >= scrollTop) ) {
var prevSection = $(this).prev();
var nextSection = $(this).next();
if( dir === "up" ) {
$.scrollTo( prevSection, {
duration : 1000,
offset : {
top : -50
},
onAfter: function() {
$("body").removeClass("scrolling");
}
});
} else {
$.scrollTo( nextSection, {
duration : 1000,
offset : {
top : -50
},
onAfter: function() {
$("body").removeClass("scrolling");
}
});
}
return false;
}
});
}
}