我在页面顶部有一个 float 菜单,因此所有 anchor 滚动位置都偏离给定值。我正在通过一个非常简单的 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,它只会进行快速的 anchor 跳转。该跳转到达了错误的位置,因为它没有被 JS 代码修复。 Chrome 不会显示此类行为,因为即使在已打开的页面上按下 ENTER,它也会重新运行 JS。
最佳答案
$(window).on('load hashchange', function(){
var offset = $(window.location.hash).offset();
if (offset) $(document).scrollTop(offset.top - $('#menu').height());
});
关于javascript - 在 URL 栏中按下 ENTER 时如何更正 Firefox 中的#anchor 滚动位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31235209/