首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在URL栏中按ENTER时如何纠正Firefox中的锚滚动位置

问在URL栏中按ENTER时如何纠正Firefox中的锚滚动位置
EN

Stack Overflow用户
提问于 2015-07-05 21:33:39
回答 1查看 795关注 0票数 0

我在页面顶部有一个浮动菜单,所以所有的锚滚动位置都由给定的值关闭。我正在通过一个非常简单的jQuery代码来纠正Javascript中的这种情况:

代码语言: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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-05 21:43:10

代码语言:javascript
复制
$(window).on('load hashchange', function(){
    var offset = $(window.location.hash).offset();
    if (offset) $(document).scrollTop(offset.top - $('#menu').height());
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31235209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档