2016-06-21 9 views
0

Ich versuche zu erkennen, wenn ein Benutzer zum unteren Ende der Seite blättern muss.Warum ist die Dokumenthöhe gleich der inneren Fensterhöhe + pageYoffset?

Die Lösung, die ich am Ende mit ist die folgende

var windowHeight = "innerHeight" in window ? window.innerHeight : document.documentElement.offsetHeight; 
var body = document.body, html = document.documentElement; 
var docHeight = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight); 
var windowBottom = windowHeight + window.pageYOffset; 

if (windowBottom >= docHeight) { 
    // Bottom is reached 
} 

Ich bin verwirrt, warum diese

Aus der Dokumentation arbeitet, innerheight die Höhe der Ansicht Portal ist, und pageYoffset ist die Menge an scroll das wir machen.

Also um scrolle nach unten zu erkennen, sollte ich nicht überprüfen, ob pageYOffset >= documentHeight?

Warum muss ich innerheight hinzufügen?

Antwort

1

Dies hat nichts mit Angular zu tun. So arbeiten alle Browser.

Ihre pageYOffset wird niemals größer als die Dokumentenhöhe sein, da sie den oberen Teil des Ansichtsfensters darstellt. Damit pageYOffset der Dokumentenhöhe entspricht, müssen Sie am Ende der Seite vorbeiscrollen.

Das Maximum pageYOffset kann sein ist die docHeight - window.innerHeight. So könnte Ihr Scheck sein:

if (pageYOffset >= docHeight - window.innerHeight) { 
    // Bottom is reached 
} 
Verwandte Themen