Wie erhalte ich den Bildlaufpositionswert eines Dokuments?
Antworten:
$(document).height() //returns window height
$(document).scrollTop() //returns scroll position from top of document
scrollHeight
.
So erhalten Sie das scrollHeight
Element, das Sie mit einem jQuery-Selektor erhalten haben:
$(selector)[0].scrollHeight
Wenn selector
die ID des Elements (z. B. elemId
) angegeben ist, ist garantiert, dass das 0-indizierte Element des Arrays das Element ist, das Sie auswählen möchten, und scrollHeight
korrekt ist.
Wenn Sie Jquery 1.6 oder höher verwenden, verwenden Sie prop, um auf den Wert zuzugreifen.
$(document).prop('scrollHeight')
In früheren Versionen wurde der Wert von attr abgerufen, jedoch nicht nach 1.6.
document.getElementById("elementID").scrollHeight
$("elementID").scrollHeight
So etwas sollte Ihr Problem lösen:
$.getDocHeight = function(){
var D = document;
return Math.max(Math.max(D.body.scrollHeight, D.documentElement.scrollHeight), Math.max(D.body.offsetHeight, D.documentElement.offsetHeight), Math.max(D.body.clientHeight, D.documentElement.clientHeight));
};
alert( $.getDocHeight() );
Ps: Rufen Sie diese Funktion jedes Mal auf, wenn Sie sie benötigen. Die Warnung dient zu Testzwecken.
Um die tatsächliche scrollbare Höhe der Bereiche zu erhalten, die von der Fenster-Bildlaufleiste gescrollt werden, habe ich verwendet $('body').prop('scrollHeight')
. Dies scheint die einfachste Arbeitslösung zu sein, aber ich habe die Kompatibilität nicht ausführlich überprüft. Emanuele Del Grande merkt an, dass dies für IE unter 8 wahrscheinlich nicht funktioniert.
Die meisten anderen Lösungen funktionieren gut für scrollbare Elemente, dies funktioniert jedoch für das gesamte Fenster. Insbesondere hatte ich das gleiche Problem wie Michael für Ankits Lösung, nämlich das, was $(document).prop('scrollHeight')
zurückkehrt undefined
.
Versuche dies:
var scrollHeight = $(scrollable)[0] == document ? document.body.scrollHeight : $(scrollable)[0].scrollHeight;
Sie können dies beispielsweise versuchen. Mit diesem Code wird die Bildlaufleiste für alle DIV-Tags unten angezeigt
Denken Sie daran: jQuery kann eine Funktion anstelle des Werts als Argument akzeptieren. "this" ist das von jQuery behandelte Objekt. Die Funktion gibt die scrollHeight-Eigenschaft des aktuellen DIV "this" zurück und führt dies für alle DIV im Dokument aus.
$("div").scrollTop(function(){return this.scrollHeight})