我在页面顶部有一个浮动菜单,所以所有的锚滚动位置都由给定的值关闭。我正在通过一个非常简单的jQuery代码来纠正Javascript中的这种情况:
if (window.location.hash !== '') {
setTimeout(function() {
var jumpPoint = $(window.location.hash).offset().top;
var menuHeight = $('#menu').height();
$(document).scrollTop(jumpPoint - menuHeight);
}, 10);
}这在Firefox和Chrome中都很好,但是Firefox有一个问题,我不知道如何解决。
当用户单击链接或打开一个新选项卡时,Firefox运行JS并通过.scrollTop()修复滚动位置。
然而,当用户只在已经打开的页面上单击ENTER时,Firefox不会重新运行JS,它只会快速跳转锚。跳转到错误的位置,因为它不是由JS代码修复的。Chrome不显示这种行为,因为它重新运行JS,即使在已经打开的页面上按下ENTER。
发布于 2015-07-05 21:43:10
$(window).on('load hashchange', function(){
var offset = $(window.location.hash).offset();
if (offset) $(document).scrollTop(offset.top - $('#menu').height());
});https://stackoverflow.com/questions/31235209
复制相似问题