Wie erhalte ich die Browser-Bildlaufposition in jQuery?

73

Ich habe ein Webdokument mit Bildlauf. Ich möchte den Wert der aktuellen Bildlaufposition in Pixel erhalten. Wenn ich die folgende Funktion ausführe, wird der Wert Null zurückgegeben. Wie kann ich das machen?

<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="js/jquery.mousewheel.min.js"></script>
<script type="text/javascript">
    $(function (){
        $('#Eframe').on("mousewheel", function() {
            alert(document.body.scrollDown)
        }
    })
</script>
Carlos
quelle
Sie möchten die Anzahl der Pixel erhalten, die ein Benutzer gescrollt hat? nur das erste Mal, wenn sie scrollen? richtig ?
Manse

Antworten:

115

Da Sie anscheinend jQuery verwenden, finden Sie hier eine jQuery-Lösung.

$(function() {
    $('#Eframe').on("mousewheel", function() {
        alert($(document).scrollTop());
    });
});

Hier gibt es nicht viel zu erklären. Wenn Sie möchten, finden Sie hier die jQuery-Dokumentation .

user2503552
quelle
3
Dies gibt mir nur 0 die ganze Zeit
Pomster
@Pomster yep. Hast du jemals eine Lösung gefunden?
r3wt
2
@Pomster @ r3wt Sie müssen sicherstellen, dass Sie die Funktion auf das zu scrollende Dokumentobjekt einstellen. Wenn also die Schriftrolle auf einigen ist <div id="foo">..., wäre die Syntax $("#foo").scrollTop().
Steven Mann
27

Es ist besser zu verwenden $(window).scroll()als$('#Eframe').on("mousewheel")

$('#Eframe').on("mousewheel") wird nicht ausgelöst, wenn Benutzer manuell mit den Aufwärts- und Abwärtspfeilen in der Bildlaufleiste scrollen oder die Bildlaufleiste selbst greifen und ziehen.

$(window).scroll(function(){
    var scrollPos = $(document).scrollTop();
    console.log(scrollPos);
});

Wenn #Eframeein Element mit overflow:scrolldarauf ist und Sie möchten, dass es die Bildlaufposition ist. Ich denke, das sollte funktionieren (ich habe es aber nicht getestet).

$('#Eframe').scroll(function(){
    var scrollPos = $('#Eframe').scrollTop();
    console.log(scrollPos);
});
Daniel Tonon
quelle
9

Reines Javascript kann!

var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
Amos
quelle
1
In meinem Fall scrollTopgibt mir das Scrollen nach der Seitenaktualisierung durch den Browser, was genau das war, was ich wollte
Hassan Tareq