【问题标题】:Why does scrollTop not work in firefox?为什么 scrollTop 在 Firefox 中不起作用?
【发布时间】:2014-09-02 08:44:45
【问题描述】:

这可能是一些愚蠢的事情,但我找不到我做错了什么。我一直在尝试使主体滚动到某个高度时出现 DOM 元素。所以我在窗口上设置了一个事件监听器来检查滚动,我检查了 body 的 scrollTop 来获取滚动位置。

这在 Chrome 中运行良好,但在 Firefox 中,无论我尝试什么,scrollTop 始终保持为 0。我也试过检查其他元素的 scrollTop ,但这也没有注册。我在 scrollTop 上找不到任何文档来解释它是如何在不同浏览器中工作的。有谁知道为什么这在 Firefox 中不起作用?还是我只是以愚蠢的方式这样做?

(function () {

    var element = document.getElementById("body");

    window.addEventListener('scroll', function (e){
      var scrollPos = element.scrollTop;
      console.log(scrollPos);
    });
})()

当然,这是一个较大脚本的一部分,但我已将其缩小并创建了一个新的 sn-p 以确保此代码造成了问题。

【问题讨论】:

  • Insted of document.getElementById("body"),尝试使用 document.getElementById("html")
  • 认真的吗?我永远也猜不到。您能否详细说明为什么这是 Firefox 的问题?
  • 这反过来了问题。在 Chrome 中检查 scrollTop 的 html 不起作用:P。
  • 我之前也遇到过这个问题,但是使用了 JQuery - see my answer。在这个主题上显然存在一些浏览器问题:)
  • 是的,有趣的事情。 jQuery 解决了一些跨浏览器问题,但我并没有加载整个 jQuery 库只是为了检查滚动:)。所以这对我来说是不行的。

标签: javascript firefox


【解决方案1】:

找到了另一种方法。我正在检查 window.pageYOffset 而不是元素的 scrollTop。作为一个额外的好处:这节省了一个 DOM 查询来检查某个元素。

感谢回答这个问题的人:Wrap the document or window object to check scroll value?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    相关资源
    最近更新 更多