【问题标题】:preventDefault, Scroll on FirefoxpreventDefault,在 Firefox 上滚动
【发布时间】:2016-07-24 13:56:39
【问题描述】:

我在 jQuery 中有这个脚本,它滚动到想要的部分,但间距到顶部。它在所有经过测试的浏览器上都能正常工作……除了 firefox。

$('nav > *').click(function(event){
    event.preventDefault();
    var navClicked = $(this).index();
    var elem = $(this).attr("href");
    $('body').scrollTop($(elem).offset().top - 48);
});

https://jsfiddle.net/5L3xyuuv/1/

【问题讨论】:

  • 也添加您的 html 代码或创建一个 jsfiddle。
  • 那是什么样的测试页面?它几乎是空的,并且不会重现问题
  • 如果它只是像常规哈希链接一样“跳转”到页面上的id 位置,为什么还要执行所有这些javascript?
  • 因为你的“跳转”会忽略标题高度(如果有的话)

标签: javascript jquery firefox scrolltop


【解决方案1】:

这里试试这个,将HTMLBODY 添加到scrollTop() 方法中,这在所有浏览器上都可以完美运行。

$('nav > *').click(function(event){
    event.preventDefault();
    var navClicked = $(this).index();
    var elem = $(this).attr("href");
    $('html,body').scrollTop($(elem).offset().top - 48);
});
nav {
  width: 100%;
  height: 48px;
  background-color: red;
  position: fixed;
  top:0;
}

#about{
  width:400px;
  height:400px;
  background:#111;
}

#benefits{
  width:400px;
  height:400px;
  background:#ccc;
}

#team{
  width:400px;
  height:400px;
  background:#f22;
}

#path{
  width:400px;
  height:400px;
  background:#f2f;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
  <a href="#about">about</a>
  <a href="#benefits">benefits</a>
  <a href="#team">team</a>
  <a href="#path">path</a>
</nav>

<div id="about"></div>
<div id="benefits"></div>
<div id="team"></div>
<div id="path"></div>

【讨论】:

  • 您的 sn-p 工作正常,但如果将其复制到我的 sn-p,它将停止工作
  • 会不会是其他 jquery 脚本导致这种情况,但仅在 firefox 上?
  • 然后你需要检查你的代码,根据你的查询,这在所有浏览器上都可以正常工作。
【解决方案2】:

$(document).scrollTop(...); 解决问题。

【讨论】:

    猜你喜欢
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多