.onscroll jquery 在 Firefox 中不工作

.onscroll jquery not working in firefox

我对编码还很陌生,有一些基础知识。 我正在做一个简单的单页网站,并使用了一些 jquery 来使顶部导航栏仅在向下滚动到页面的顶部元素 ('landing page') 之后出现 - 按顺序有一个清洁工 'landing page'.

(我使用了这种方法而不是 scroll-past-fixed px 值,因为它需要在媒体查询触发时适应网站的移动版本)

在我在 Firefox 中尝试它之前,它工作得非常好 - 然后没有任何反应。 现在完全迷失了。

下面是我通过Whosebug找到的原代码,稍作改编。

提前致谢!

window.onscroll = function (oEvent) {
  var mydivpos = document.getElementById("intro").offsetTop;
  var scrollPos = document.getElementsByTagName("body")[0].scrollTop;
  
  if(scrollPos >= mydivpos)
    document.getElementById("bottomMenu").className = "";
  else
    document.getElementById("bottomMenu").className = "hidden";
};
#bottomMenu {
  position: fixed;
  top: 0px;
  left: 0px;
  width: 100%;
  height: 64px;
  border: 4px solid #000;
  background: white;
  z-index: 100;
}



.hidden { 
  display: none; 
}
<!DOCTYPE html>

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>test</title>
<style id="jsbin-css">

</style>
</head>
<body>
  
  <div id="bottomMenu" class="hidden">HELLO</div>
  a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />
  <div id="intro">MYDIV</div>
  a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />
  
  
</body>
</html>  

我相信 document.getElementsByTagName("body")[0].scrollTop(或 document.body.scrollTop)已被弃用,但一些浏览器仍然依赖它。

如果您更改此行,您的解决方案在 Firefox 上运行良好:

 var scrollPos = document.getElementsByTagName("body")[0].scrollTop;

为此:

var scrollPos = document.documentElement.scrollTop;

但它在 Chrome 中不再起作用。所以你需要这样做:

var scrollPos = document.documentElement.scrollTop || document.body.scrollTop;

这是一个fiddle:https://jsfiddle.net/willemo/fyury33p/2/