2016-04-24 5 views
1

Ich bin sehr neu in der Codierung und haben ein grundlegendes Wissen. Ich mache eine einfache Seite mit einer Seite und habe ein bisschen jQuery benutzt, um eine obere Navigationsleiste erscheinen zu lassen, nur um nach dem oberen Element ("Landing page") der Seite zu scrollen - um einen sauberer zu haben "Zielseite".onscroll jquery funktioniert nicht in firefox

(Ich habe diesen Ansatz anstelle der Scroll-Vergangenheit fest px Wert verwendet, da es auf der mobilen Version der Website, wenn sie von Medienabfrage ausgelöst anpassen muss)

Das funktioniert wunderbar, bis ich versuche, es in Firefox - dann passiert nichts. Total jetzt verloren.

Unten ist der ursprüngliche Code, den ich durch stackoverflow gefunden habe und etwas angepasst habe.

danke im voraus!

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>

Antwort

1

Ich glaube document.getElementsByTagName ("body") [0] .scrollTop (oder document.body.scrollTop) ist veraltet, aber einige Browser verlassen sich immer noch auf sie.

Ihre Lösung funktioniert auf Firefox in Ordnung, wenn Sie diese Zeile ändern:

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

Um dies:

var scrollPos = document.documentElement.scrollTop; 

Aber dann ist es nicht mehr in Chrome arbeiten. Sie müssen also, dies zu tun:

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

Hier ist eine Geige: https://jsfiddle.net/willemo/fyury33p/2/

Verwandte Themen